コンパイラの警告 (レベル 2 および 4) C4200
非標準の拡張機能が使用されています : 構造体または共用体中にサイズが 0 の配列があります。
構造体または共用体がサイズが 0 の配列が含まれていることを示します。
サイズが 0 の配列の宣言は、Microsoft 拡張機能です。 これにより、C ファイルをコンパイルした場合はレベル 2 の警告、C++ ファイルをコンパイルした場合はレベル 4 の警告が発生します。 C++ のコンパイルでも、"UDT にサイズが 0 の配列が含まれているときに、copy-ctor または copy-assignment オペレーターを生成することはできません。" という警告が発生します。この例では、警告 C4200 が発生します:
// C4200.cpp
// compile by using: cl /W4 c4200.cpp
struct A {
int a[0]; // C4200
};
int main() {
}
この非標準の拡張機能は、可変長の外部データ構造とのインターフェイス コードによく使用されます。 コードがこのシナリオに該当する場合は、次のように警告を無効にできます。
例
// C4200b.cpp
// compile by using: cl /W4 c4200a.cpp
#pragma warning(disable : 4200)
struct A {
int a[0];
};
int main() {
}