次のコードでは、なぜ 2 つのステートメントが不正なのか
const int i[] = { 1, 2, 3, 4 };
// float f[i[3]]; // Illegal
struct S { int i, j; };
const S s[] = { { 1, 2 }, { 3, 4 } };
//double d[s[1].j]; // Illegal
int main() {}
なぜ彼らは違法なのですか?テキストの定義は次のとおりで、私は理解していませんでした。
「配列定義では、コンパイラは配列に対応するためにスタック ポインタを移動するコードを生成できなければなりません。上記の両方の違法な定義では、配列定義で定数式が見つからないため、コンパイラは文句を言います。」
前もって感謝します。