在Eclipse中无法识别c++ GNU指定的结构初始化
C++ GNU designated structure initialization not recognized in Eclipse
CDT解析器报告结构初始化的语法错误:
typedef struct MyStruct
{
int a;
float b;
};
int main( void )
{
// GNU C extension format
MyStruct s = {a : 1, b : 2};
// C99 standard format
// MyStruct s = {.a = 1, .b = 2};
return 0;
}
虽然GCC将:
形式列为过时的,但它似乎没有被弃用或删除。在C99中,我当然会使用标准的.<name> =
形式,但对于c++, :
是我所知道的用于指定初始化的唯一选项。
我已经尝试将我的工具链设置为MinGW和Cross GCC,但似乎都不起作用。
如何让Eclipse识别这个语法?对于一行来说,这不是什么大问题,但它会传递到变量的所有其他实例,因为Eclipse没有意识到它已被声明。
.
形式仅在C99中可用,而在任何风格的c++中都没有。在c++中,唯一与标准兼容的选项是有序初始化或构造函数。
您可以使用链接和适当的引用返回方法来创建类似的接口(这里a和b是方法而不是变量):
MyStruct s;
s.a(1).b(2);
我也遇到过这样的问题,我用下面的方法来解决。
MyStruct s = {
1,
2,
}
这要求程序员确保初始化的顺序。
相关文章:
- 多成员Constexpr结构初始化
- 为什么用结构初始化数组需要指定结构名称
- 使用指定的初始值设定项聚合匿名结构初始化
- 不同的类或结构初始化方法之间的性能差异是什么?
- 如何在结构初始化中获取成员C++
- C++正确的结构初始化
- 使用大括号进行结构初始化
- 内部结构初始化不起作用 - C++
- 使用嵌套结构初始化并集
- 使用匿名结构初始化联合
- 结构初始化语法
- 结构初始化的 C++ 向量
- C++嵌套结构初始化和访问成员
- 结构初始化中的常量正确性
- 使用 C++ 中的自定义元素进行 Const 结构初始化
- 如何在结构C++初始化内置数组
- Visual C++ 模板类成员结构初始化语法糖
- C++结构初始化
- C 在结构初始化过程中带有内部阵列的奇怪错误
- 此C/C 的结构初始化器如何使用足够的字段工作