g++不支持结构体.的操作初始化方式

 g++是C++编译器,编不过正常啊。结构体的designated initializer初始化在C++中不受支持。C++兼容的C语言规法是C90版本,而designated initializer是C99加入的,当然GNU扩展也支持,但是这个扩展也是针对C的而非C++,所以gcc可以编过而g++不行

 

修改如下:

#include<iostream>
using namespace std;

struct Test
{
    int a;
    int b;
    int c;
};

struct Test t =
{

    t.c = 4 //缺省t,将不被g++编译通过
};

int main()
{
    cout<<t.c<<endl;
    return 0;
}

 

你可能感兴趣的:(C语言,结构体,编译器)