1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
/*run.config
STDOPT: #"-c11"
*/
typedef struct {
int f1;
struct {
int f2;
};
int f3;
} s1;
typedef struct {
union {
struct {
unsigned f1: 1;
unsigned f2: 1;
unsigned f3: 1;
unsigned : 10;
unsigned f5: 1;
unsigned : 6;
};
unsigned i;
};
unsigned j;
} s2;
typedef struct {
union {
int a;
long b;
};
} s3;
s1 g1 = {
.f1 = 1,
.f3 = 3
};
s2 g2 = {
.f1 = 1,
.f2 = 1,
.f3 = 0,
.f5 = 1,
.j = 0
};
s2 g3 = {
.f3 = 1,
2,
.f1 = 3,
4
};
s2 g4 = { { { .f1 = 0 } } };
s2 g5 = { 1, 2, 3, 4, 5 };
s2 g6 = { { 1, 2, 3, 4}, 5 };
/* According to the braces, the 5 correspond to i instead of j, which cause the
5 to be ignored (too many elements in union) while j has no special value
(initialized to 0) */
s2 g7 = { { { {1}, 2, 3, 4}, 5} };
s3 g8 = { { .a = 0 } };
int main() {
return g2.f5;
}
|