VS2010编译C代码提示type name is not allowed错误如何解决
报错原因
Visual Studio 2010的C语言编译器仅支持C89标准,你代码中(Vector2D) {x, y}的写法属于C99才新增的复合字面量特性,C89标准不允许这种直接通过类型名加花括号初始化结构体实例的语法,因此编译器会抛出type name is not allowed的错误。
可行修复方案
- 方案1:修改函数实现,兼容C89标准
先声明局部结构体变量,赋值后再返回,不需要修改编译配置和工具链,兼容性最好:static inline Vector2D vector2D (double x, double y) { Vector2D vec; vec.x = x; vec.y = y; return vec; } - 方案2:升级编译工具链
更换为Visual Studio 2013及以上版本,这些版本的C编译器已支持C99复合字面量特性,原有代码无需修改即可正常编译。 - 方案3:开启C编译模式
如果你必须使用VS2010,可以将对应源文件的后缀从.c改为.cpp,使用C模式编译,C++标准支持该类初始化写法,也可以解决报错问题。
内容的提问来源于stack exchange,提问作者Beowulf99
相关产品推荐
相关产品推荐

