C指定初始化器和普通初始化器问题

在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"后面多了个逗号。