X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=typesafe_cb%2Ftest%2Fcompile_fail-cast_if_type-callback.c;fp=typesafe_cb%2Ftest%2Fcompile_fail-cast_if_type-callback.c;h=313a53ed8c97931a05ea3a0a86d6972964f39fa8;hb=eded23d444462d115adf0a96b36b7b86a118f7b4;hp=0000000000000000000000000000000000000000;hpb=9927eebe7c5c257c990d86baaa8760994195d48b;p=ccan diff --git a/typesafe_cb/test/compile_fail-cast_if_type-callback.c b/typesafe_cb/test/compile_fail-cast_if_type-callback.c new file mode 100644 index 00000000..313a53ed --- /dev/null +++ b/typesafe_cb/test/compile_fail-cast_if_type-callback.c @@ -0,0 +1,26 @@ +#include "typesafe_cb/typesafe_cb.h" +#include + +static void _callback(void (*fn)(void *arg), void *arg) +{ + fn(arg); +} + +#define callback(fn, arg) \ + _callback(cast_if_type((fn), void (*)(typeof(arg)), void (*)(void *)), \ + arg) + +static void my_callback(char *p) +{ +} + +int main(int argc, char *argv[]) +{ + callback(my_callback, "hello world"); + +#ifdef FAIL + /* Must be a char * */ + callback(my_callback, my_callback); +#endif + return 0; +}