C ++中的编译时常量

时间:2016-02-18 09:04:38

标签: c++ arrays compilation

我一直在读,数组应该在编译时具有已知的大小。这是一段代码示例:

pod install

根据作者的说法,大小已知 at runtime and results in an error

但是,我编译并运行了代码并且没有错误。

作者是否正确,在上面的代码中,数组的大小在运行时是已知的?如果他是,为什么我能编译并运行代码?

在我看来,这个大小在编译时是已知的。有什么我不明白的东西吗?

编辑。我使用了g ++编译器,没有额外的选项:     g ++ main.C -o main

2 个答案:

答案 0 :(得分:6)

在编译时不知道大小,即使它看起来很明显。 temp不是编译时常量,用于初始化size,使其也不是一个。

它适用于您,因为GCC允许将可变长度数组作为非标准语言扩展。

答案 1 :(得分:3)

temp在编译时已知 。编译器必须具有允许可变长度数组的非标准扩展。

编译器永远不会假设temp是不可变的,尽管你显然不会改变它。 (你可能会有一天会破坏你的代码,甚至你可能会想出一种改变temp的聪明方法。