1

VC++ 团队的官方博客曾表示:“VC+​​+ 2013 RTM 将支持 C99 指定初始化器。”

但是,以下代码被 VC++ 2013 RC 拒绝:

struct A
{
    int a;
    double b;

    A()          = default; // OK as promised
    virtual ~A() = default; // OK as promised
    A(const A&)  = delete;  // OK as promised
};

int main()
{
    A a = { .b = 3.14159 }; // Error! It is NOT as promised!
}
4

1 回答 1

3

从您链接的同一页面引用:

Herb 还宣布,应客户要求,RTM 版本还将在编译 C 代码时包含一些战术性的C99语言扩展,以便一些流行的社区库(包括 FFmpeg)现在可以使用 Visual C++ 2013 进行编译。

因此,指定的初始化程序将仅在 C 代码中,而不是在 C++ 代码中。我看到A是用 C++ 语法定义的,有:-)

于 2013-09-14T06:33:17.393 回答