【发布时间】:2014-03-14 21:19:56
【问题描述】:
我对 GCC 编译器错误“错误:类型的标量初始化程序大括号”有一个恼人的问题。我看到其他人对此有所抱怨,尽管他们将其描述为警告 (gcc warning: braces around scalar initializer)
我正在编译不是我要编辑的代码,我在整个代码中遇到了很多这样的错误。
基本模式是:
struct t_
{
float f;
int i;
};
float f = { 0.3 }; //Compiler is all happy with this.
int i = {0}; //Compiler is all happy with this too.
t_ t1 = { 0.3, 0 }; //Compiler is all happy with this too.
t_ t2 = { {0.3}, 0 }; //Compiler ERROR: braces around scalar initializer for type 'float'
我知道我可以删除浮动缩放器周围的大括号 {} 以消除此错误,但我不想以任何方式修改代码。有没有我可以给 GCC 的标志(目前使用 MinGW gcc 4.8.1)。即“std=c++03”,或者让这些错误至少显示为警告的东西。
谢谢
【问题讨论】:
-
为什么要在标量初始化器周围放置大括号?看起来很奇怪。
-
这段代码以前在什么编译器上工作过?
-
根据语言语法,这不是语法错误; braced-init-list 可以是 { initializer-clause, initializer-clause, ... },而 initializer-clause 可以是 支撑初始化列表。有人能指出
t2初始化是非法的吗? -
代码最初是用 VxWorks Windriver Workbench 为嵌入式硬件编写和编译的。它现在正在通过 gcc 为 Linux 编译。
标签: c++ gcc compiler-construction compiler-errors braces