E2021 配列には最低 1 個の要素が必要 (C++)

提供: RAD Studio
移動先: 案内検索

コンパイラのエラーと警告(C++):インデックス への移動

ANSI C および C++ では,配列は少なくとも 1 つの要素を持つように定義する必要があります。サイズ 0 のオブジェクトは許可されません。

古いプログラミング手法では,サイズ 0 の構造体の配列要素を宣言し,malloc で実際に必要な領域を割り当てています。

この手法は引き続き使用できますが,厳密な ANSI モードでコンパイルする場合は,少なくとも 1 つの要素を持つように配列要素を宣言する必要があります。

サイズが不明な配列の宣言は(定義ではなく),引き続き許可されます。



 char ray[];         /* 不明なサイズの定義 - 不正 */
 char ray[0];        /* サイズ 0 の定義 - 不正 */
 extern char ray[];  /* 不明なサイズの宣言 - OK */