1

VC++ チームの公式ブログでは、「C99 指定イニシャライザは VC++ 2013 RTM でサポートされる予定です。」

ただし、次のコードは 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 コードのみになります。AC++構文で定義されているのがわかります:-)

于 2013-09-14T06:33:17.393 に答える