问题 原来xxx.c文件编译不会报错,现在把xxx.c改名为xxx.cpp,报错“xxx.cpp:106:2: sorry, unimplemented: non-trivial designated initializers not supported”。 原因 c++编译器和c编译器对语法检查规则不同,c语言对结构体初始化时,结构成员的初始化次序没有要求,c++对结构体初始化,成员必须按定义的顺序。 解决办法 把成员的初始化次序修改为何成员的定义一致。