忽略 GCC "error: braces around scalar initializer for type"错误。发出警告
Ignoring GCC "error: braces around scalar initializer for type" errors. Make them warnings
我有一个困扰GCC编译器错误的问题"error:大括号包围了类型的标量初始化器"。我看到其他人对此抱怨,尽管他们将其描述为警告(gcc warning:大括号环绕标量初始化器)
我正在编译不是我可以编辑的代码,并且在整个代码中我得到了很多这些错误。
基本模式为:
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",或者其他让这些错误至少显示为警告的东西。
谢谢
我不是百分之百确定,但我相信没有这样的选择。在这两种情况下,你所拥有的结构并不意味着同样的事情——第一个是一个结构的初始化,第二个是一个包含结构或数组的结构。当然float
不是。
你可以用
来解决这个问题struct t_
{
struct
{
float f;
};
int i;
};
至少clang对此很满意。g++也是如此。这可能比更改大量带有额外大括号的初始化语句更容易。但不可否认,这仍然是对源代码的更改。不幸的是,我很确定这是必要的。
完整的例子,我正在测试:
struct t_
{
struct
{
float f;
};
int i;
};
t_ t2 = { {0.3}, 0 };
int main()
{
t2.f = 7;
}
编辑:如果根本不可能编辑源代码,则需要解析源代码,识别不正确的大括号并输出"正确"的代码。我越想这个问题,我就越不相信在没有对源代码进行某种编辑的情况下修复它是可能的。或者它曾经编译过……
相关文章:
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- std::unordered_map 类型对象声明期间出现"field has incomplete type"错误
- 将系数存储在头文件的数组中("does not name a type"错误)
- 尝试打开 ifstream 时出现"Incomplete type"错误
- C++ "错误:在'类 std::result_of< ... >"中没有名为'type'的类型"
- 结构中的错误"Incomplete type is not allowed"
- 在 C++ 中使用命名空间时出现"does not name a type"错误
- 已声明时"Does not name a type"错误
- 错误:断言失败 (src.type() == CV_8UC1) 在阈值中
- 如何摆脱导入的 make 项目中的 Eclipse 索引器"Type std::... could not be resolved"错误
- unordered_set .find 方法无法编译的 C++ "expression must have class type"错误
- C++ 嵌套类模板 错误 C2440 '=':无法从'type'转换为'same type'
- 模板类和'invalid use of incomplete type'错误
- 索引 2D 向量时'Reference to type const..'编译错误
- 我用C++做了一个计算器,但我对"type of calculator"的要求循环了两次。有人可以帮助指出我的错误吗?
- 使用变换翻转地图,接收错误"type int unexpected"
- C++生成器错误"Type name expected" time_t
- MSVC 2008 错误 'Type' 不是结构 (尽管它是)
- 无法理解此错误... "Type 'const intSet' does not provide a subscript operator"这是与所有星号一致的
- 使用 C++ 编译器面临错误"type qualifier specified more than once"