Таким образом, при компиляции с базовым 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 "работает"?
Что такое правильный код, и, если первый фрагмент неверен, почему он компилируется, а затем почему он работает с ошибками?
IИспользую icc (ICC) 12.0.2 20110112 на 2011 x86_64 Intel (R) Core (TM) i5.
Спасибо