繁体   English   中英

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

[英]C++11 in-class initializer with MSVC 2013

以下代码可使用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 EHsc一起使用时,它给了我(抱歉,我没有英文版,但是您可以从错误编号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++
“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。

正如在Microsoft Developers Network上所说的那样,此消息是由于编译/构建优化而出现的,因此您可以尝试删除此优化。

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

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

就像他们在这里说的那样,您可以使用/P开关来获取有关编译器行程错误的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM