Share via


编译器错误 C3300 - C3399

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

重要

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++ 帮助和社区

错误消息

错误 消息
编译器错误 C3300 “symbol”:IDL“value”的格式不正确
编译器错误 C3301 “coclass”:coclass 不能是“symbol”接口
编译器错误 C3302 “identifier”:标识符的字符数超过 number 个
编译器错误 C3303 “attribute”:特性只能在“type”上使用
编译器错误 C3304 已过时。
编译器错误 C3305 已过时。
编译器错误 C3306 “template”:不允许存在未命名的类模板/泛型
编译器错误 C3307 “module”:无法创建 IDL 模块
编译器错误 C3308 “function”:不支持通过导入类进行直接调用
编译器错误 C3309 “macro/keyword”:模块名不能是宏或关键字
编译器错误 C3310 “identifier”:模块名冲突
编译器错误 C3311 模块特性必须在全局范围内定义
编译器错误 C3312 找不到类型“type”的可调用“identifier”函数
编译器错误 C3313 “identifier”:变量不能有类型“type”
编译器错误 C3314 “symbol”:不是支持的 IDL 模块类型
编译器错误 C3315 “function”:必须是成员函数
编译器错误 C3316 “type”:大小未知的数组不能在基于范围的语句中使用
编译器错误 C3317 “identifier”:重载函数不能在基于范围的 For 语句中用作表达式
编译器错误 C33181 “type”:数组的元素类型不能是包含“auto”的类型
编译器错误 C3319 已过时。
编译器错误 C3320 “type”:类型不能和模块的“name”属性同名
编译器错误 C3321 此上下文中存在意外的初始值设定项列表
编译器错误 C3322 “property”:不是特性“attribute”的有效属性
编译器错误 C3323 函数声明上不允许“alignas”和“__declspec(align)”
编译器错误 C3324 “property”:属性在特性“attribute”中出现多次
编译器错误 C3325 “attribute”:特性的参数太多
编译器错误 C3326 “value”:不是属性“property”(属于特性“attribute”)的有效值
编译器错误 C3327 “property”:必须指定特性“attribute”的属性值
编译器错误 C3328 “attribute”:特性没有足够的参数
编译器错误 C3329 语法错误:应为“token1”而不是“token2”
编译器错误 C3330 “function”:函数不能返回数组“type”
编译器错误 C3331 “identifier”:只有 COM 接口和组件类允许参数特性
编译器错误 C3332 “property”:语法不一致,同时要求有属性“property”,并且有默认值
编译器错误 C3333 “library”:无法 #import 损坏的类型库
编译器错误 C3334 无法 #import 损坏的类型库
编译器错误 C3335 “identifier”:组件类“class”最多可以有一个默认接口
编译器错误 C3336 该操作必须在类范围内执行
编译器错误 C3337 “identifier”:defaultvtable 必须是组件类“class”的事件源
编译器错误 C3338 “identifier”:最多有一个默认接口,它也是组件类“class”的事件源
编译器错误 C3339 模板参数需要参数列表后的“class”或“typename”
编译器错误 C3340 “identifier”:组件类“class”中的接口不能同时是“restricted”和“default”
编译器错误 C3341 “interface”:defaultvtable 接口必须是“dual”或者是“custom”
编译器错误 C3342 “identifier”:属性不明确
编译器错误 C3343 “class::name”:特性标识符包含过多字符
编译器错误 C3344 无法定义显式专用化,也无法定义“symbol”的部分专用化
编译器错误 C3345 “name”:模块名的标识符无效
编译器错误 C3346 在非命名空间范围导出的声明
编译器错误 C3347 “argument”:所需参数未在特性 attribute-name 中指定
编译器错误 C3348 导出的模板不属于当前 C++ 标准
编译器错误 C3349 “class::member”:多播特性已由提供程序 provider-name 实现
编译器错误 C3350 “function”:委托构造函数需要 number 个参数
编译器错误 C3351 “function”:如果向委托构造函数传递 NULL 对象实例,则必须也传递静态成员函数的地址
编译器错误 C3352 “function”:指定的函数与委托类型“type”不匹配
编译器错误 C3353 “identifier”:委托只能从全局函数或者托管/WinRT 类型的成员函数中创建
编译器错误 C3354 “identifier”:该函数用于创建不能有返回类型“type”的委托
编译器错误 C3355 “class::member”:多播特性侦听提供程序“provider1”,但是由提供程序“provider2”实现
编译器错误 C3356 “identifier”:无法使用完全限定的名称调用多播特性
编译器错误 C3357 “attribute”:特性不明确,必须使用完全限定的名称
编译器错误 C3358 “symbol”:未找到符号
编译器错误 C3359 “specialization”:无法专用化模板
编译器错误 C3360 “string”:无法创建名称
编译器错误 C3361 没有可在其中执行操作的上下文
编译器错误 C3362 “class::member”:多播特性尚未实现
编译器错误 C3363 “identifier”:“typeid”只能应用于类型
编译器错误 C3364 “function”:委托构造函数的参数无效;委托目标需要是指向成员函数的指针
编译器错误 C3365 运算符“operator”:区分类型为“type”和“type”的操作数
编译器错误 C3366 “member”:托管/WinRT 类型的静态数据成员必须在类定义中定义
编译器错误 C3367 “function”:不能使用静态函数创建未绑定的委托
编译器错误 C3368 “declarator”:IDL 的调用约定无效
编译器错误 C3369 “module”:idl_module 已定义
编译器错误 C3370 “module”:idl_module 尚未定义
编译器错误 C3371 “idl_module”: 此处只允许“name”属性
编译器错误 C3372 必须至少为组件类的特性“attribute”指定 1 个接口
编译器错误 C3373 除了针对组件类,特性“attribute”不接受任何参数
编译器错误 C3374 不能采用“function”的地址,除非创建委托实例
编译器错误 C3375 “function”:委托函数不明确
编译器错误 C3376 “template”:只允许使用静态数据成员模板
编译器错误 C3377 新表达式中不允许使用“decltype(auto)”(在 Visual Studio 2022 中已过时。)
编译器错误 C3378 只可从模块接口单元中导出声明
编译器错误 C3379 “class”:嵌套类不能将程序集访问说明符作为声明的一部分
编译器错误 C3380 “specifier”:程序集访问说明符无效 - 只允许“public”或“private”
编译器错误 C3381 “specifier”:程序集访问说明符只有在用 /clr 选项编译的代码中才可用
编译器错误 C3382 不支持将“sizeof”与 /clr:safe 一同使用
编译器错误 C3383 不支持将“operator new”与 /clr:safe 一起使用
编译器错误 C3384 “type”:值约束与 ref 约束互相排斥
编译器错误 C3385 “function”:具有 DllImport 自定义特性的函数不能返回类实例
编译器错误 C3386 “type”:__declspec(dllexport)/__declspec(dllimport) 不适用于 managed/WinRT 类型
编译器错误 C3387 “member”:__declspec(dllexport)/__declspec(dllimport) 不适用于 managed/WinRT 类型的成员
编译器错误 C3388 “token”:不允许作为约束,假定“value”继续进行分析
编译器错误 C3389 __declspec(specifier) 不能与 /clr:pure 或 /clr:safe 一起使用
编译器错误 C3390 “type”:泛型“generic_type”的泛型参数“parameter”的类型实参无效,它必须是引用类型
编译器错误 C3391 “type”:泛型“generic_type”的泛型参数“parameter”的类型实参无效,它必须是不可为 null 的值类型
编译器错误 C3392 “type”:泛型“generic_type”的泛型参数“parameter”的类型实参无效,它必须具有公共无参数构造函数
编译器错误 C3393 constraint 子句有语法错误:“identifier”不是一个类型
编译器错误 C3394 constraint 子句有语法错误:应为类型却发现“symbol”
编译器错误 C3395 “function”:__declspec(dllexport) 不能应用于具有 __clrcall 调用约定的函数
编译器错误 C3396 “class member”:“namespace”中未发现自定义属性
编译器错误 C3397 默认参数中不允许进行聚合初始化
编译器错误 C3398 “operator”:无法将“type”转换为“type”。 源表达式必须是函数符号
编译器错误 C3399 “type”:创建泛型参数的实例时无法提供变量

1-不再在 Visual Studio 2022 版本 17.11 中发出

另请参阅

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