void f() { printf("called f!\n"); } double g(double x, char y, int z) { return z-y+x; } struct V2 { int f2, f3; }; struct V { int f1; V2 i; // temporary // struct V2 { // int f2, f3; // } i; double f4; } v; lvalue V h() { static V local = { 111, { 222, 333 }, 444.5 }; return local; } int main() { struct X { int a; double b; char c; } x = { 10, 12.5, '\x9' }; // should only call f once printf("g(...)=%lg\n", g((f(), x).[b, c, a])); v.[f1, i.[f2, f3], f4].[1.0, 2, 0, 1.1] = [11, 3.14159, 12, 13]; printf("v.[f1, i.[f2, f3], f4]=[%d, %d, %d, %lg]\n", v.[f1, i.[f2, f3], f4]); h().[f1, i.[f2, f3], f4].[1.0, 2, 0, 1.1] = [987, 6.28, 4, 2]; printf("v.[f1, i.[f2, f3], f4]=[%d, [%d, %d], %lg]\n", h().[f1, i.[f2, f3], f4]); }