Typesafe callback infrastructure.
[ccan] / typesafe_cb / test / compile_fail-cast_if_type-callback-int.c
1 #include "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(cast_if_type((fn), void (*)(typeof(arg)), void (*)(void *)), \
14                   arg)
15
16 void my_callback(int something);
17 void my_callback(int something)
18 {
19 }
20
21 int main(int argc, char *argv[])
22 {
23 #ifdef FAIL
24         callback(my_callback, 100);
25 #endif
26         return 0;
27 }