在下面的代码中为什么这两个语句是非法的
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() {}
为什么它们是非法的?文字定义如下,我不明白。
“在数组定义中,编译器必须能够生成移动堆栈指针以容纳数组的代码。在上述两种非法定义中,编译器都会抱怨,因为它无法在数组定义中找到常量表达式。”
提前致谢。