0 c++
在下面的代码中,为什么这两个语句是非法的
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() {}
Run Code Online (Sandbox Code Playgroud)
他们为什么非法?文字定义如下,我不明白.
"在数组定义中,编译器必须能够生成移动堆栈指针以容纳数组的代码.在上面的两个非法定义中,编译器都会抱怨,因为它无法在数组定义中找到常量表达式."
提前致谢.
数组大小需要是常量表达式.试试这个:
constexpr int i[] = { 1, 2, 3, 4 };
float f[i[3]];
Run Code Online (Sandbox Code Playgroud)
该constexpr关键字是在C++ 11中引入的.以前版本的C++没有这种通用常量表达式的概念,也没有相同的概念.
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |