#include TLIST_TYPE(children, struct child); struct child { const char *name; struct ccan_list_node list; }; struct cousin { const char *name; struct ccan_list_node list; }; int main(int argc, char *argv[]) { struct tlist_children children; struct child child = { "child" }; #ifdef FAIL #if !HAVE_FLEXIBLE_ARRAY_MEMBER #error Need flexible array members to check type #endif struct cousin *c; #else struct child *c; #endif tlist_init(&children); tlist_add(&children, &child, list); tlist_for_each(&children, c, list) (void) c; /* Suppress unused-but-set-variable warning. */ return 0; }