typedef unsigned int u32; typedef void (*fn)(int); typedef struct { int x, y, z; } anon_struct_t; void f(void (*fn)(int)) { } enum E { V1 = 0, V2 = 1, }; enum E e = V1; struct S; union U; struct S; u32 func(enum E bla, const struct S* fwd_s, volatile union U* fwd_u) { return bla; } struct SimpleStruct { int a; u32 b; void (*f)(int a, enum E b); enum E arr[10]; }; union SimpleUnion { int a; struct SimpleStruct s; char arr[128]; }; union NestedAnonUnion { struct { int a; union { int b; int c; } d; struct { int x; char y; u32 z; }; } A; int B; union SimpleUnion C; union { struct SimpleStruct Q; union SimpleUnion T; }; }; int main() { static struct SimpleStruct s1; static union SimpleUnion s2; static union NestedAnonUnion s3; static anon_struct_t s4; return 0; }