1103856Stjr/* 2103856Stjr * Copyright 2020, Data61, CSIRO (ABN 41 687 119 230) 3103856Stjr * 4103856Stjr * SPDX-License-Identifier: BSD-2-Clause 5227753Stheraven */ 6227753Stheraven 7227753Stheravenstruct foo { int x, y; }; 8227753Stheraven 9227753Stheravenstruct bar { struct foo f; char c[3]; int a[6]; }; 10103856Stjr 11103856Stjrint simple1(void) 12103856Stjr{ 13103856Stjr struct foo s = {1,2}; 14103856Stjr return s.x; 15103856Stjr} 16103856Stjr 17103856Stjrint simple2(void) 18103856Stjr{ 19103856Stjr struct foo s = {.y = 2}; 20103856Stjr return s.x; 21103856Stjr} 22103856Stjr 23103856Stjrint simple3(void) 24103856Stjr{ 25103856Stjr int array[10] = {1,2,3}; 26103856Stjr return array[1]; 27103856Stjr} 28103856Stjr 29103856Stjrint simple4(void) 30103856Stjr{ 31103856Stjr int array[10] = {[1] = 4, [6] = 7,}; 32103856Stjr return array[6]; 33103856Stjr} 34103856Stjr 35103856Stjrint simple5(void) 36103856Stjr{ 37103856Stjr char carr[5] = {1}; 38227753Stheraven} 39103856Stjr 40103856Stjrstruct bar f(int i) 41103856Stjr{ 42103856Stjr return (struct bar){.f = {.y = i, .x = i+1,}, .c = {1,[2] = 2}}; 43103856Stjr} 44103856Stjr 45103856Stjrint g(int j) 46103856Stjr{ 47103856Stjr struct bar b = {1,2,3,4,5}; 48103856Stjr return b.c[1]; // should be 4 49103856Stjr} 50103856Stjr 51103856Stjrint h(void) 52227753Stheraven{ 53227753Stheraven int array[10] = {[4] = 10,[5] = 10}; 54227753Stheraven return array[0]; // returns 0 55227753Stheraven} 56227753Stheraven 57227753Stheravenint function(void) 58227753Stheraven{ 59227753Stheraven struct foo record = {.x = 3,}; 60227753Stheraven return record.x; 61227753Stheraven} 62227753Stheraven 63227753Stheravenint function2(void) 64227753Stheraven{ 65 struct bar b = { .f.x = 3, 1,2 }; 66 return b.f.x; // returns 3 67} 68 69int function3(void) 70{ 71 int a[5] = {1,2,3,4,5,[1] = 10}; 72 return a[1]; 73} 74 75int main(int argc, char**argv) 76{ 77 struct foo f = {10,12}; 78 struct bar test = {f,{1,2},{101}}, test2 = {{1}, {2}, {3}}; 79 struct bar b_array[10] = { test, test2, 1, 2 }; 80 int aa[] = {1,2,3,[10] = 6}; 81 return b_array[2].f.x + b_array[0].c[2] + b_array[1].c[0]; // returns 3 82} 83 84struct sjwbar { 85 int words[1]; 86}; 87typedef struct sjwbar bar_t; 88 89int sjw(int sj_w) 90{ 91 bar_t w = { .words = {sj_w} }; 92} 93 94enum anenum { val1, val2 = -1 }; 95 96struct inc_enum { 97 enum anenum e; 98 int x; 99}; 100 101int enum_test(int x) 102{ 103 struct inc_enum s = { .x = 3 }, t = { .e = val2 }; 104 return t.e; 105} 106