在C ++ 11中对结构数组进行括号初始化

kiokko89:

这是我的代码:

#include <string>

struct A
{
    int a;
    std::string sa;
};

int main()
{
    A arr[3]{};
}

当我使用gcc 4.8.2(在Ubuntu 14.04上)使用-std=gnu++11选项编译它时,出现以下错误:

example.cpp: In function ‘int main()’:
example.cpp:11:14: internal compiler error: in gimplify_init_constructor, at gimplify.c:4271
 A arr[3]{};
          ^

为什么会引发内部编译器错误?它是编译器错误吗?

用户743382:

内部编译器错误始终是编译器错误,对于代码是否有效没有任何说明。

如果代码无效,则编译器应该给出一条错误消息,告诉您代码出了什么问题。内部编译器错误仅告诉您编译器有什么问题。

鉴于此内部编译器错误在更高版本中仍然存在(我刚刚检查了4.9.2,以及截至1月29日的最新消息),我通常强烈建议将此问题报告为GCC开发人员的错误,但快速搜索便可以发现他们已经知道了

您可以通过编写来解决它A arr[3]{{}};,这意味着同一件事。对于第一个元素,它包含与arr默认情况下相同的初始化程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章