E2021 配列には最低 1 個の要素が必要 (C++)
ANSI C および C++ では,配列は少なくとも 1 つの要素を持つように定義する必要があります。サイズ 0 のオブジェクトは許可されません。
古いプログラミング手法では,サイズ 0 の構造体の配列要素を宣言し,malloc で実際に必要な領域を割り当てています。
この手法は引き続き使用できますが,厳密な ANSI モードでコンパイルする場合は,少なくとも 1 つの要素を持つように配列要素を宣言する必要があります。
サイズが不明な配列の宣言は(定義ではなく),引き続き許可されます。
例
char ray[]; /* 不明なサイズの定義 - 不正 */
char ray[0]; /* サイズ 0 の定義 - 不正 */
extern char ray[]; /* 不明なサイズの宣言 - OK */