compiler: RETURNS_NONNULL macro
[ccan] / ccan / typesafe_cb / test / compile_fail-typesafe_cb-int.c
1 #include <ccan/typesafe_cb/typesafe_cb.h>
2 #include <stdlib.h>
3
4 void _callback(void (*fn)(void *arg), void *arg);
5 void _callback(void (*fn)(void *arg), void *arg)
6 {
7         fn(arg);
8 }
9
10 /* Callback is set up to warn if arg isn't a pointer (since it won't
11  * pass cleanly to _callback's second arg. */
12 #define callback(fn, arg)                                               \
13         _callback(typesafe_cb(void, (fn), (arg)), (arg))
14
15 void my_callback(int something);
16 void my_callback(int something)
17 {
18         (void)something;
19 }
20
21 int main(void)
22 {
23 #ifdef FAIL
24         /* This fails due to arg, not due to cast. */
25         callback(my_callback, 100);
26 #endif
27         return 0;
28 }