编译器错误 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 无效:在非精确模式下不支持异常 |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈