带有MSVC 2013的C ++ 11类内初始化程序

时间:2014-03-04 10:32:31

标签: c++ visual-c++ gcc c++11

以下代码与MinGW-gcc-4.8.2 g++ test.cpp -std=c++11编译良好:

// test.cpp
#include <iostream>

class Test
{
public:
    int a[10] = {};
};

int main()
{
    Test c;
    std::cout << c.a[0];

    return 0;
}

然而,当我将msvc2013与cl test.cpp /EHsc一起使用时,它给了我(抱歉,我没有英文版,但你可以从错误中判断出来):

test.cpp
test.cpp(6) : fatal error C1001: 编译器中发生内部错误。
(编译器文件“f:\dd\vctools\compiler\cxxfe\sl\p1\c\convert.cpp”,第 9608 行)
 要解决此问题,请尝试简化或更改上面所列位置附近的程序。
请选择 Visual C++
“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。

1 个答案:

答案 0 :(得分:1)

正如Microsoft Developers Network所述,由于编译/构建优化而出现此消息,因此您可以尝试删除此优化。

  

编译器无法为构造生成正确的代码,可能是由于表达式和优化选项的组合。尝试删除一个或多个优化选项,然后重新编译包含错误消息中指示的行的函数。

     

您可以通过删除一个或多个优化选项来解决问题。要确定哪个选项出错,请一次删除一个选项并重新编译,直到错误消息消失为止。最常见的选项是/ Og,/ Oi和/ Oa。一旦确定哪个选项负责,您可以使用发生错误的函数周围的optimize pragma禁用它,并继续使用该模块其余部分的选项。

正如他们所说here,您可以使用/P开关获取有关编译器itnernal错误的更多信息。