aboutsummaryrefslogtreecommitdiff
path: root/tinycc/tests/tests2/03_struct.c
diff options
context:
space:
mode:
Diffstat (limited to 'tinycc/tests/tests2/03_struct.c')
-rw-r--r--tinycc/tests/tests2/03_struct.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/tinycc/tests/tests2/03_struct.c b/tinycc/tests/tests2/03_struct.c
new file mode 100644
index 0000000..fd73133
--- /dev/null
+++ b/tinycc/tests/tests2/03_struct.c
@@ -0,0 +1,38 @@
+extern int printf(const char*, ...);
+
+struct fred;
+
+void fred$(struct fred* this)
+{
+ printf("~fred()\n");
+}
+
+struct __attribute__((__cleanup__(fred$))) fred
+{
+ int boris;
+ int natasha;
+};
+
+int main()
+{
+ struct fred __attribute__((__cleanup__(fred$))) bloggs;
+
+ bloggs.boris = 12;
+ bloggs.natasha = 34;
+
+ printf("%d\n", bloggs.boris);
+ printf("%d\n", bloggs.natasha);
+
+ struct fred jones[2];
+ jones[0].boris = 12;
+ jones[0].natasha = 34;
+ jones[1].boris = 56;
+ jones[1].natasha = 78;
+
+ printf("%d\n", jones[0].boris);
+ printf("%d\n", jones[0].natasha);
+ printf("%d\n", jones[1].boris);
+ printf("%d\n", jones[1].natasha);
+
+ return 0;
+}