Tag: 编译时常

“int size = 10;”产生一个常量expression式吗?

下面的代码在gcc 4.8和Clang 3.2下编译: int main() { int size = 10; int arr[size]; } C ++标准的8.3.4 / 1指出数组的大小必须是一个整数常量expression式,这个size似乎不是。 这是两个编译器的错误,还是我错过了什么? 最新的VC ++ CTP用这个有趣的消息拒绝代码: error C2466: cannot allocate an array of constant size 0 有趣的部分是它似乎认为size为零。 但至less它拒绝了代码。 gcc和Clang不应该这样做吗?