编译器警告(等级 4)C4221

使用的非标准扩展:“identifier”:无法使用自动变量的地址来初始化

利用默认的 Microsoft 扩展 (/Ze) ,可以使用本地(自动)变量的地址来初始化聚合类型(array、structunion

示例

// C4221.c
// compile with: /W4
struct S
{
   int *i;
};

void func()
{
   int j;
   struct S s1 = { &j };   // C4221
}

int main()
{
}

根据 ANSI 兼容性 (/Za),此类初始化无效。