add _Generic test
[tinycc.git] / tests / tests2 / 94_generic.c
blobfad028bb4c7941702c076012d2b11e441cdd1ff4
1 #include <stdio.h>
3 const int a = 0;
5 struct a {
6 int a;
7 };
9 struct b {
10 int a;
13 int a_f()
15 return 20;
18 int b_f()
20 return 10;
23 #define gen_sw(a) _Generic(a, const char *: 1, default: 8, int: 123);
25 int main()
27 int i = 0;
28 struct b titi;
29 const int * const ptr;
30 const char *ti;
32 i = _Generic(a, int: a_f, const int: b_f)();
33 printf("%d\n", i);
34 i = _Generic(ptr, int *:1, int * const:2, default:20);
35 printf("%d\n", i);
36 i = gen_sw(a);
37 printf("%d\n", i);
38 i = _Generic(titi, struct a:1, struct b:2, default:20);
39 printf("%d\n", i);
40 i = _Generic(a, char:1, int[4]:2, default:5);
41 printf("%d\n", i);
42 i = _Generic(17, int :1, int **:2);
43 printf("%d\n", i);
44 i = _Generic(17L, int :1, long :2);
45 printf("%d\n", i);
46 i = _Generic("17, io", const char *:1, char *:3, const int :2);
47 printf("%d\n", i);
48 i = _Generic(ti, const char *:1, char *:3, const int :2);
49 printf("%d\n", i);
50 return 0;