mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
103 lines
1.8 KiB
C
103 lines
1.8 KiB
C
struct someStruct {
|
|
int i;
|
|
int j;
|
|
};
|
|
|
|
struct someOtherStruct {
|
|
int a;
|
|
int b;
|
|
};
|
|
|
|
union someUnion {
|
|
int n;
|
|
double d;
|
|
};
|
|
|
|
void f(int x, int y) {
|
|
struct someStruct sInit1 = {
|
|
.i = x + x,
|
|
.j = y - y,
|
|
};
|
|
|
|
struct someStruct sInit2 = { x + x, y - y };
|
|
|
|
struct someStruct ss[] = {{x + x, y - y}, {x * x, y / y}};
|
|
|
|
struct someStruct sInit3 = { x };
|
|
|
|
struct someStruct sInit4 = { .j = y };
|
|
|
|
int aInit1[2] = { x, y };
|
|
|
|
int aInit2[2] = { x };
|
|
|
|
int aInit3[2] = { [1] = y };
|
|
|
|
union someUnion uInit1 = { x };
|
|
union someUnion uInit2 = { .n = x };
|
|
union someUnion uInit3 = { .d = 5.0 };
|
|
}
|
|
|
|
struct complexStruct {
|
|
struct someStruct sss[3];
|
|
int as[3];
|
|
struct someOtherStruct soss[3];
|
|
int z;
|
|
};
|
|
|
|
void g(int x, int y) {
|
|
// Nested aggregate designated initializers
|
|
struct complexStruct complexInit1 = {
|
|
.as = {
|
|
[2] = x,
|
|
[0] = y,
|
|
x+y // as[1]
|
|
},
|
|
.z = 42,
|
|
.soss = {
|
|
[1] = {
|
|
.a = x+y,
|
|
.b = x-y
|
|
},
|
|
[0] = {
|
|
.b = x*y,
|
|
.a = x/y
|
|
}
|
|
// soss[2] is value initializaed
|
|
}
|
|
// sss is value initialized
|
|
};
|
|
|
|
// Nested aggregate non-designated initializers
|
|
struct complexStruct complexInit2 = {
|
|
{ // sss
|
|
{ // sss[0]
|
|
x, // sss[0].i
|
|
y // sss[0].j
|
|
},
|
|
{ // sss[1]
|
|
x+1, // sss[1].i
|
|
// sss[1].j is value initialized
|
|
}
|
|
// ss[2] is value initialized
|
|
},
|
|
{ // as
|
|
99, // as[0]
|
|
x*y // as[1]
|
|
// as[2] is value initialized
|
|
},
|
|
{ // soss
|
|
{ // soss[0]
|
|
123, // soss[0].a
|
|
y+1 // soss[0].b
|
|
},
|
|
{ // soss[1]
|
|
x, // soss[1].a
|
|
// soss[1].b is value initialized
|
|
}
|
|
// soss[2] is value initialized
|
|
}
|
|
// z is value initialized
|
|
};
|
|
}
|