Merge Makefile rewrite into master
[ccan] / ccan / tcon / test / compile_fail-container3.c
1 #include <stdlib.h>
2
3 #include <ccan/tcon/tcon.h>
4 #include <ccan/build_assert/build_assert.h>
5 #include <ccan/tap/tap.h>
6
7 struct inner {
8         int inner_val;
9 };
10
11 struct outer {
12         int outer_val;
13         struct inner inner;
14 };
15
16 struct info_base {
17         char *infop;
18 };
19
20 struct info_tcon {
21         struct info_base base;
22         TCON(TCON_CONTAINER(concan, struct outer, inner));
23 };
24
25 int main(void)
26 {
27         struct info_tcon info;
28         struct outer ovar;
29 #ifdef FAIL
30 #if !HAVE_TYPEOF
31 #error We cannot detect type problems without HAVE_TYPEOF
32 #endif
33         int *outerp;
34 #else
35         struct outer *outerp;
36 #endif
37
38         outerp = tcon_container_of(&info, concan, &ovar.inner);
39         return outerp != NULL;
40 }