我一直在读,数组应该在编译时具有已知的大小。这是一段代码示例:
pod install
根据作者的说法,大小已知 at runtime and results in an error。
但是,我编译并运行了代码并且没有错误。
作者是否正确,在上面的代码中,数组的大小在运行时是已知的?如果他是,为什么我能编译并运行代码?
在我看来,这个大小在编译时是已知的。有什么我不明白的东西吗?
编辑。我使用了g ++编译器,没有额外的选项: g ++ main.C -o main
答案 0 :(得分:6)
在编译时不知道大小,即使它看起来很明显。 temp
不是编译时常量,用于初始化size
,使其也不是一个。
它适用于您,因为GCC允许将可变长度数组作为非标准语言扩展。
答案 1 :(得分:3)
temp
在编译时已知 。编译器必须具有允许可变长度数组的非标准扩展。
编译器永远不会假设temp
是不可变的,尽管你显然不会改变它。 (你可能会有一天会破坏你的代码,甚至你可能会想出一种改变temp
的聪明方法。