编译器警告(级别 2 和级别 4)C4200

使用了非标准扩展:结构/联合中的零大小数组

仅限 C++:

默认构造函数或复制/移动赋值运算符将忽略此成员

此警告指示结构或联合包含大小为零的数组。 大小为零数组的声明为非标准编译器扩展。 编译 C++ 文件时,这会造成等级 2 警告,而在编译 c 文件时会造成等级 4 警告。 此示例生成警告 C4200:

// C4200.cpp
// compile by using: cl /W4 c4200.cpp
struct A {
    int len;
    int a[0];  // C4200
};

此非标准扩展常用于将代码与具有可变长度的外部数据结构连接起来。 如果此方案适用于你的代码,则可禁用此警告:

示例

// C4200b.cpp
// compile by using: cl /W4 c4200a.cpp
#pragma warning(disable : 4200)
struct A {
    int len;
    int a[0];
};