Compiler Warning (level 4) C4221
nonstandard extension used : 'identifier' : cannot be initialized using address of automatic variable
With the default Microsoft extensions (/Ze), you can initialize an aggregate type (array, struct
, or union
) with the address of a local (automatic) variable.
Example
// C4221.c
// compile with: /W4
struct S
{
int *i;
};
void func()
{
int j;
struct S s1 = { &j }; // C4221
}
int main()
{
}
Such initializations are invalid under ANSI compatibility (/Za).