C++ GNU 指定的结构初始化在 Eclipse 中无法识别

标签 c++ eclipse gcc eclipse-cdt

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 lists the : form as obsolete ,它似乎没有被弃用或删除。在 C99 中我肯定会使用标准 .<name> =形式,但对于 C++,:是我所知道的用于指定初始化的唯一选项。

我已经尝试将我的工具链设置为 MinGW 和 Cross GCC,但似乎都不起作用。

如何让 Eclipse 识别这种语法?这对一行来说没什么大不了的,但它会传递到变量的每个其他实例,因为 Eclipse 没有意识到它已被声明。

最佳答案

. 形式仅在 C99 中可用,在任何 C++ 风格中均不可用。在 C++ 中,唯一符合标准的选项是有序初始化或构造函数。

可以使用链接和适当的引用返回方法来创建类似的接口(interface)(这里 a 和 b 是方法而不是变量):

MyStruct s;
s.a(1).b(2);

关于C++ GNU 指定的结构初始化在 Eclipse 中无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14325129/

相关文章:

c++ - 'auto'之前是什么?

Eclipse 打开项目中的所有文件

java - 将星号作为命令行参数传递给 Eclipse 中的 main

c - SQLite3添加自定义功能

c++ - Linux 用户空间 header 无法使用 g++ 进行编译

c - 通用函数宏和如何抑制特定的 GCC 警告 : "Pointer Type Mismatch in Conditional Expression"

c++ - 我怎样才能得到一个返回自身的 boost::function (或其他通用函数包装器)?

c++ - 定时一次标志

c++ - 超过 2 维的多维数组看起来如何?

eclipse - 将 UBUNTU_MENUPROXY=0 添加到 eclipse.desktop-file 不起作用,为什么?