int main() { /* Empty initializers and compound literals - gcc */ struct empty2 {int i;}; struct empty2 k = {}; /* Empty initializer */ k = (struct empty2){}; /* Empty compound literal */ int i; typedef struct empty {} ES; ES k2 = {}; /* Empty initializer */ k2 = (ES){}; /* Empty compound literal */ /* Simple designators and compound literals */ struct point { int x, y;} *p2, p = {.y = 1, .x = 2}; p = (struct point){.x = 4, .y = 8}; p2 = &(struct point){.x = 14, .y = 18}; p2 = &(struct point){.y = 14, 18}; /* Excess elements */ /* Nested designators and compound literals */ struct color {int r, g, b; }; struct rectangle { struct point tl, br; struct color c; } r = { .br = { .y = 4, .x = 8 }, .c = { .r = 4, .b = 1, .g = 12}, .tl = { .x = 1, .y = 2 }, }; r = (struct rectangle){ .br = { .y = 4, .x = 8 }, .c = { .r = 4, .b = 1, .g = 12}, .tl = { .x = 1, .y = 2 } }; r = (struct rectangle){ { .y = 4, .x = 8 }, { .x = 1, .y = 2 }, { .r = 4, .b = 1, .g = 12}, }; r = (struct rectangle){ .br = (struct point){ .y = 4, .x = 8 }, .c = (struct color){ .r = 4, .b = 1, .g = 12}, .tl = (struct point){ .x = 1, .y = 2 } }; r = (struct rectangle){ .tl = { .x = 1, .y = 2 }, .br = (struct point){ .y = 4, .x = 8 }, { .r = 4, .b = 1, .g = 12}, }; }