编译器错误 C3100 - C3199

本文档部分提到的文章解释了编译器生成的一部分错误消息。

重要

Visual Studio 编译器和生成工具可报告多种类型的错误和警告。 发现错误或警告后,生成工具可做出有关代码意向的假设并尝试继续,因此,可能会同时报告更多问题。 如果工具做出错误假设,则后续错误或警告可能不适于你的项目。 纠正项目中的问题时,请始终先纠正报告的第一个错误或警告,然后在通常情况下重新生成。 一个修补程序可能会使许多后续错误消失。

若要在 Visual Studio 中获取有关特定诊断消息的帮助内容,请在“输出”窗口中选择该消息,然后按 F1 键。 Visual Studio 会打开该错误的文档页(如果存在)。 还可以使用页面顶部的搜索工具查找有关特定错误或警告的文章。 或者,按工具浏览错误和警告列表,并在此页面上的内容列表中键入内容。

注意

并非所有 Visual Studio 错误或警告均有记录。 在许多情况下,诊断消息将提供所有可用信息。 如果在使用 F1 时登陆此页,并且认为错误或警告消息需要额外的解释,请告诉我们。 可以使用此页面上的反馈按钮在 GitHub 上提出文档问题。 如果认为错误或警告是错误的,或者发现了工具集的其他问题,请在开发者社区网站上报告产品问题。 还可以在 IDE 中发送反馈并输入 bug。 在 Visual Studio 中,转到菜单栏并选择“帮助”>“发送反馈”>“报告问题”,或者使用“帮助”>“发送反馈”>“发送建议”提交建议

可以在 Microsoft Learn Q&A 论坛上查找有关错误和警告的其他帮助。 或者,在 Visual Studio C++ 开发者社区网站上搜索错误或警告编号。 还可以搜索 Stack Overflow 以查找解决方案。

有关指向其他帮助和社区资源的链接,请参阅 Visual C++ 帮助和社区

错误消息

错误 消息
编译器错误 C3100 “identifier”:未知的属性限定符
编译器错误 C3101 命名属性参数“identifier”的非法表达式
编译器错误 C3102 已过时。
编译器错误 C3103 “identifier”:重复的命名参数
编译器错误 C3104 非法属性参数
编译器错误 C3105 “symbol”:不能用作属性
编译器错误 C3106 “attribute”:未命名参数必须在命名参数之前
编译器错误 C3107 “attribute”:无法定义原生属性的成员函数
编译器错误 C3108 无法推断出类型,因为初始值设定项列表不是表达式
编译器错误 C3109 “identifier”:接口方法必须使用“__stdcall”或“__cdecl”调用约定
编译器错误 C3110 “function”:不能重载 COM 接口方法
编译器错误 C3111 初始值设定项列表不能用作模板形参的默认实参
编译器错误 C3112 “interface”:接口只能在全局或命名空间范围内声明
编译器错误 C3113 “接口/枚举”不能是模板/泛型
编译器错误 C3114 “identifier”:不是有效的命名属性参数
编译器错误 C3115 “attribute”:“construct”上不允许使用此属性
编译器错误 C3116 “specifier”:接口方法的存储类无效
编译器错误 C3117 “interface”:一个接口只能有一个基类
编译器错误 C3118 “interface”:接口不支持虚拟继承
编译器错误 C3119 不允许使用 alignas(void)
编译器错误 C3120 “identifier”:接口方法不能接受变量参数列表
编译器错误 C3121 无法更改“class”类的 GUID
编译器错误 C3122 “interface”:WinRT 泛型接口不能有 GUID
编译器错误 C3123 WinRT 泛型接口不能有约束
编译器错误 C3124 “signed char”不是有效的 WinRT 数据类型。 请改为使用“unsigned char”、“wchar_t”或“signed short”。
编译器错误 C3125 “type”:类型无法直接或间接从“Platform::Exception”派生
编译器错误 C3126 不能在托管/WinRT 类型“type”内定义联合“union”
编译器错误 C3127 “type”:“trait”特征只能在 WinRT ref 类上使用
编译器错误 C3128 “type”没有由“type”引入的 vtable
编译器错误 C3129 “type”:__default_vptr_for_base 只能在本地定义的多态类型和基类上使用
编译器错误 C3130 内部编译器错误:未能将注入的代码块写入 PDB
编译器错误 C3131 项目必须具有带“name”属性的“module”特性
编译器错误 C3132 “parameter”:形参数组只能应用于“一维托管/WinRT 数组”类型的实参中
编译器错误 C3133 特性无法应用于 C++ varargs
编译器错误 C3134 “value”:属性参数“argument”的值没有有效类型“type”
编译器错误 C3135 “identifier”:属性类型不能为“const”或“volatile”
编译器错误 C3136 “interface”:一个 COM 接口只能从另一个 COM 接口继承,“interface”不是一个 COM 接口
编译器错误 C3137 “identifier”:无法初始化属性
编译器错误 C3138 “identifier”:“attribute”接口必须继承自 IDispatch,或继承自 IDispatch 的接口
编译器错误 C3139 “type”:不能导出没有成员的 UDT
编译器错误 C3140 同一编译单元中不能有多个“module”属性
编译器错误 C3141 “interface”:接口只支持公共继承
编译器错误 C3142 “property”:不能获取属性地址
编译器错误 C3143 “argument”:属性参数不能有多个值
编译器错误 C3144 “attribute”:属性需要显式参数,“argument”未命名
编译器错误 C3145 “identifier”:全局或静态变量可能没有托管/WinRT 类型“type”
编译器错误 C3146 已过时。
编译器错误 C3147 已过时。
编译器错误 C3148 已过时。
编译器错误 C3149 “type”:此处没有顶级“token”,不能使用此类型
编译器错误 C3150 “construct”:“attribute”只能应用于类、结构、接口、数组或指针
编译器错误 C3151 已过时。
编译器错误 C3152 “function”:“keyword”只能应用于类、结构或虚成员函数
编译器错误 C3153 “interface”:无法创建接口实例
编译器错误 C3154 省略号前应使用“,”。 参数数组函数不支持非逗号分隔的省略号。
编译器错误 C3155 属性索引器中不允许使用属性
编译器错误 C3156 “class”:不能局部定义托管/WinRT 类型
编译器错误 C3157 ParamArray 属性只能应用于最后一个参数
编译器错误 C3158 “function”:“keyword”只能应用于虚成员函数
编译器错误 C3159 “identifier”:不能声明指向值类型的指针数组
编译器错误 C3160 “type”:托管/WinRT 类的数据成员的类型不能是此类型
编译器错误 C3161 “interface”:接口中的嵌套类、结构或接口是非法的;类或结构中的嵌套接口是非法的
编译器错误 C3162 “type”:具有析构函数的引用类型不能用作静态数据成员“member”的类型
编译器错误 C3163 “class”:属性与以前的声明不一致
编译器错误 C3164 已过时。
编译器错误 C3165 “value”:无法转换成整型或浮点型数值
编译器错误 C3166 已过时。 “type”:托管/WinRT 类的数据成员的类型不能为“pointer_type 到内部 managed_pointer_type”
编译器错误 C3167 无法初始化 .NET Framework:请确保已安装
编译器错误 C3168 “type”:枚举的基础类型非法
编译器错误 C3169 “type”:无法从“type”推断“auto”的类型
编译器错误 C3170 一个项目中不能有不同的模块标识符
编译器错误 C3171 “module”:无法在项目中指定不同的 module 属性
编译器错误 C3172 “identifier”:在一个项目中不能指定不同的 idl_module 属性
编译器错误 C3173 idl 合并中的版本不匹配
编译器错误 C3174 未指定 module 属性
编译器错误 C3175 “function”:不能从非托管函数“function”调用托管类型的方法
编译器错误 C3176 “type”:不能声明局部值类型
编译器错误 C3177 不能将转换函数转换为包含“type”的类型(在 Visual Studio 2022 中已过时。)
编译器错误 C3178 “type”:无法在具有默认参数的函数中使用 ParamArray(在 Visual Studio 2022 中已过时。)
编译器错误 C3179 不允许使用未命名的托管/WinRT 类型
编译器错误 C3180 “type”:名称超出了“number”个字符的元数据限制
编译器错误 C3181 “type”:运算符的操作数无效
编译器错误 C3182 “type”:托管/WinRT 类型中的成员 using 声明或访问声明非法
编译器错误 C3183 不能在托管/WinRT 类型“class”的内部定义未命名的类、结构或联合
编译器错误 C3184 已过时。
编译器错误 C3185 “typeid”:在托管或 WinRT 类型“type”上使用了它,请改用“operator”
编译器错误 C3186 已过时。
编译器错误 C3187 “identifier”:仅在函数体内可用
编译器错误 C3188 已过时。
编译器错误 C3189 “typeid<declarator>”:不再支持此语法,请改用 ::typeid(在 Visual Studio 2022 中已过时。)
编译器错误 C3190 具有所提供的模板参数的“declarator”不是“type”的任何成员函数的显式实例化
编译器错误 C3191 已过时。
编译器错误 C3192 语法错误:“^”不是前缀运算符(你是否希望使用“*”?)
编译器错误 C3193 “construct”:需要“/clr”或“/ZW”命令行选项
编译器错误 C3194 “type”:值类型不能具有赋值运算符
编译器错误 C3195 “keyword”:被保留并且不能用作 ref 类或值类型的成员。 必须使用“operator”关键字定义 CLR/WinRT 运算符
编译器错误 C3196 “identifier”:使用了多次
编译器错误 C3197 “keyword”:只能在定义中使用
编译器错误 C3198 使用浮点 pragma 无效:fenv_access pragma 只在精确模式下运行
编译器错误 C3199 使用浮点 pragma 无效:在非精确模式下不支持异常

另请参阅

C/C++ 编译器和生成工具错误与警告
编译器错误 C2000 - C3999、C7000 - C7999