在C++中,我尝试声明一个具有某个大小的全局数组。我得到了错误消息:'array bound is not an integer constant before ‘]’ token'。但是当我在main()函数中声明了一个相同类型的数组时,它可以正常工作。为什么这里会有不同的行为?
int y=5;
int arr[y]; //When I comment this line it works fine
int main()
{
int x=5;
int arr2[x]; // This line doesn't show any error.
}
编辑:许多人认为这个问题与获取错误“在'token'之前数组边界不是整数常量”重复。但是那个问题并没有回答为什么存在不同的行为。
main
函数中,使用可变长度数组扩展也是不合法的。 - Jarod42y
和x
声明为const
?你需要修改y
或x
的值吗?希望不需要,因为这会引发许多关于arr
和arr2
大小的问题,特别是在初始化顺序方面。(提示:它们应该是常量) - Wyck--std=c++17
(如果是旧编译器,则使用--std=c++11
)编译您的程序,编译将失败。 - einpoklum