| #include <stdbool.h> | |
| #include <stdio.h> | |
| struct ForwardDecl; | |
| typedef int MyInt; | |
| void populate(MyInt i); | |
| typedef enum MyEnum { | |
| eOne = 1, | |
| eTwo =2, | |
| eThree = 3, | |
| } MyEnumT; | |
| typedef union MyUnion { | |
| MyInt i; | |
| const char* s; | |
| } MyUnionT; | |
| typedef struct MyNestedStruct { | |
| MyInt i; | |
| const char* s; | |
| volatile char c; | |
| char a[4]; | |
| MyEnumT e; | |
| MyUnionT u; | |
| _Bool b; | |
| } MyNestedStructT; | |
| typedef struct MyStruct { | |
| MyNestedStructT n; | |
| void (*f)(int); | |
| } MyStructT; | |
| struct LargeStruct { | |
| char buffer[9000]; | |
| int b; | |
| }; | |
| struct RecursiveStruct { | |
| struct RecursiveStruct *n; | |
| }; | |
| MyStructT foo; | |
| struct ForwardDecl *forward; | |
| struct LargeStruct bar; | |
| struct RecursiveStruct ke; | |
| void populate(MyInt i) { | |
| foo.n.i = i; | |
| foo.n.s = "foo"; | |
| foo.n.c = 'c'; | |
| foo.n.a[0] = 'a'; | |
| foo.n.a[1] = 'b'; | |
| foo.n.a[2] = 'c'; | |
| foo.n.a[3] = 'd'; | |
| foo.n.e = eOne; | |
| foo.n.b = false; | |
| foo.f = NULL; | |
| forward = NULL; | |
| bar.b = i; | |
| ke.n = NULL; | |
| } | |
| int main(int argc, char** argv) { | |
| populate(argc); | |
| printf("foo is at address: %p\n", (void*)&foo); // Break here | |
| return 0; | |
| } |