You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 19:30:05