在C primer 第6版里提到结构体初始化的方法C99,C11支持
如
struct A{int a;int b;};
struct A example={.a=1,.b=2,1,};
后者的普通初始化器会覆盖前者的指定初始化器的值
可是在vs2017中这个被报错了:错误是参数太多
请问:这种初始化方法真的可行吗?
struct A example = {0};
example.a = 1;
example.b =2;
首先,你是不是敲错代码了
struct A{int a;int b;};
struct A example={.a=1,.b=2,1,};
即使可行,参数个数也不对,
struct A{int a;int b;};
struct A example={.a=1,.b=2};
vs2015里“.a=1”编译报错,因为“.”是操作符,前面应该有相应的对象,
15里面像下面这样用
struct A{int a;int b;};
struct A example={1,2};
最好不要用,而且你的"1"后面多了个逗号。