diff options
Diffstat (limited to 'lib/ccan/container_of/test/compile_fail-bad-type.c')
-rw-r--r-- | lib/ccan/container_of/test/compile_fail-bad-type.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/ccan/container_of/test/compile_fail-bad-type.c b/lib/ccan/container_of/test/compile_fail-bad-type.c new file mode 100644 index 0000000000..b7a1459386 --- /dev/null +++ b/lib/ccan/container_of/test/compile_fail-bad-type.c @@ -0,0 +1,22 @@ +#include <ccan/container_of/container_of.h> +#include <stdlib.h> + +struct foo { + int a; + char b; +}; + +int main(int argc, char *argv[]) +{ + struct foo foo = { .a = 1, .b = 2 }; + int *intp = &foo.a; + char *p; + +#ifdef FAIL + /* p is a char *, but this gives a struct foo * */ + p = container_of(intp, struct foo, a); +#else + p = (char *)intp; +#endif + return p == NULL; +} |