因此,当使用基本编译icc bob.cpp -o bob并运行时,以下代码段错误:
#include <string>
int foo () {
return 6;
}
int main() {
std::string t[foo()];
}
但是,以下两个类似的程序似乎运行良好。
#include <string>
int foo () {
return 6;
}
int main() {
int f = foo();
std::string t[f];
}
和
#include <string>
int foo () {
return 6;
}
int main() {
std::string t[6];
}
我对发生的事情有点困惑。显然,可变长度数组是非标准的,这让我很惊讶,因为我一直使用支持它的 g++。但是,如果ICC不支持它,为什么要编译呢?另外,为什么示例 2“有效”?
这里什么是正确的代码,如果第一个片段不正确,为什么它会编译,然后为什么会出现段错误?
我在 2011 x86_64 Intel(R) Core(TM) i5 上使用 icc (ICC) 12.0.2 20110112。
谢谢