C++ Primer指出:
数组的维度必须在编译时知道,这意味着维度必须是常量表达式。
另外还指出了一个要点:
unsigned count = 42; // not a constant expression
constexpr unsigned size = 42; // a constant expression
那么,我会期望以下声明失败。
a[count]; // Is an error according to Primer
然而,实际上并没有问题。编译和运行都很好。
还有一件奇怪的事情是,在数组声明后面使用++count;
也没有任何问题。
程序是在g++4.71
上使用-std=c++11
标志编译的。
为什么会这样呢?
-W -Wall -Wextra -pedantic
- Kerrek SBISO C++禁止可变长度数组
的警告。虽然不是错误。请回答,以便我可以接受。 - James Raitsev-Werror
的错误。 - chris