【问题标题】:expected primary expression before . token之前的预期主要表达式。令牌
【发布时间】:2014-04-23 06:18:16
【问题描述】:

如何借助结构在 C++ 中快速和交互地使用结构成员?

struct op {
    bool fast;
    bool interactive;
}
format_options = {
    .fast        = false,
    .interactive = true
};

【问题讨论】:

  • C99 标记初始化语法不是标准 C++ 的一部分。

标签: c++


【解决方案1】:

在 C++ 中您不需要这种类型的对象初始化(并且您不能在 C++ 中执行此操作,因为这是 c99 支持的),因为您可以使用构造函数。

struct op {
    bool fast;
    bool interactive;
    op () :
       fast(false),
       interactive(true)
    {}
};

这将达到你的目的

【讨论】:

    【解决方案2】:

    从结构声明后缺少的分号开始,你必须告诉编译器'format_options'是'op'类型。正确的代码是:

    struct op {
        bool fast;
        bool interactive;
    };
    
    op format_options = {
        .fast        = false,
        .interactive = true
    };
    

    【讨论】:

    • 不,它还不是官方的 C++。指定的初始值设定项在最新的 C++20 草案中,但不在 C++17 中。 g++ 默认允许它们(因为它具有支持 C99 的代码和逻辑),但如果添加 -Wpedantic 会指出它是无效的。
    猜你喜欢
    • 2012-10-30
    • 2020-10-30
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2017-02-01
    相关资源
    最近更新 更多