X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=typesafe_cb%2Ftest%2Fcompile_fail-cast_if_type-callback-int.c;fp=typesafe_cb%2Ftest%2Fcompile_fail-cast_if_type-callback-int.c;h=85006c9b363840a31e439dc079111bc466d3ad3a;hp=0000000000000000000000000000000000000000;hb=eded23d444462d115adf0a96b36b7b86a118f7b4;hpb=9927eebe7c5c257c990d86baaa8760994195d48b diff --git a/typesafe_cb/test/compile_fail-cast_if_type-callback-int.c b/typesafe_cb/test/compile_fail-cast_if_type-callback-int.c new file mode 100644 index 00000000..85006c9b --- /dev/null +++ b/typesafe_cb/test/compile_fail-cast_if_type-callback-int.c @@ -0,0 +1,27 @@ +#include "typesafe_cb/typesafe_cb.h" +#include + +void _callback(void (*fn)(void *arg), void *arg); +void _callback(void (*fn)(void *arg), void *arg) +{ + fn(arg); +} + +/* Callback is set up to warn if arg isn't a pointer (since it won't + * pass cleanly to _callback's second arg. */ +#define callback(fn, arg) \ + _callback(cast_if_type((fn), void (*)(typeof(arg)), void (*)(void *)), \ + arg) + +void my_callback(int something); +void my_callback(int something) +{ +} + +int main(int argc, char *argv[]) +{ +#ifdef FAIL + callback(my_callback, 100); +#endif + return 0; +}