gpt4 book ai didi

c++ - 可变长度数组的 ICC 段错误

转载 作者:行者123 更新时间:2023-11-28 01:07:15 24 4
gpt4 key购买 nike

因此,当使用基本的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。

谢谢

最佳答案

好吧,虽然 C++ 确实没有可变长度数组(尽管 C99 确实如此),但显然 ICC 确实支持它们作为扩展,因为您的代码实际上编译(并且自从您的第二个片段实际上运行没有崩溃)。

如果第一个版本崩溃了,那么它一定是 ICC 实现该非标准扩展的错误。

关于c++ - 可变长度数组的 ICC 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5502602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com