编译器错误 C3400 - C3499

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

重要

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

错误消息

错误 Message
编译器错误 C3400 涉及“constraint1”和“constraint2”的循环约束依赖项
编译器错误 C3401 “specifier”:程序集访问说明符无效 - 类模板上只允许“private”
编译器错误 C3402 “function”:除了在当前范围内,无法解析重载
编译器错误 C3403 thread_local 不能与 /clr:pure 或 /clr:safe 一起使用
编译器错误 C3404 “construct”:意外的语法错误
编译器错误 C3405 “function”:没有完整的说明符将无法解析重载
编译器错误 C3406 “keyword”:不能在详细类型说明符中使用
编译器错误 C3407 “type”不能用于此上下文
编译器错误 C3408 “attribute”:模板定义中不允许使用特性
编译器错误 C3409 不允许空特性块
编译器错误 C3410 “identifier”:显式实例化“type”的类型与变量模板“type”的类型不匹配
编译器错误 C3411 由于数组的大小不是整数类型,因此“type”无效
编译器错误 C3412 “specialization”:不能在当前范围内专用化模板
编译器错误 C3413 “template”:显式实例化无效
编译器错误 C3414 “function”:无法定义导入的成员函数
编译器错误 C3415 找到多个具有不同属性(“0xvalue”)的“section”部分
编译器错误 C3416 已过时。
编译器错误 C3417 “declarator”:值类型不能包含用户定义的特殊成员函数
编译器错误 C3418 不支持访问说明符“specifier”
编译器错误 C3419 已过时。
编译器错误 C3420 “function”:终结器不能是虚拟的
编译器错误 C3421 “function”:不能调用此类的终结器,因为它要么无法访问,要么不存在
编译器错误 C3422 “declaration”:类型“type”和“type”不匹配
编译器错误 C3423 已过时。
编译器错误 C3424 “type”:不允许将函数样式强制转换为数组类型
编译器错误 C3425 无法引发指向不完整类型“type”的对象的指针
编译器错误 C3426 无法引发不完整类型“type”的对象
编译器错误 C3427 “context”:“keyword”不能用于 layout_version(number)
编译器错误 C3428 “context”:“keyword”只能应用于类声明或定义
编译器错误 C3429 “context”:“keyword”不能应用于联合
编译器错误 C3430 区分范围的枚举必须有名称
编译器错误 C3431 “identifier”:不能将 type1 重新声明为 type2
编译器错误 C3432 “identifier”:未区分范围的枚举的前向声明必须有基础类型
编译器错误 C3433 “identifier”:所有枚举声明都必须有相同的基础类型,以前为“type1”,现在为“type2”
编译器错误 C3434 “context”:枚举器值“number”不能表示为“type”,值为“number”
编译器错误 C3435 不支持字符集“name”。
编译器错误 C3436 在已指定 /source-charset、/execution-charset 或 /utf-8 时,不支持 #pragma setlocale
编译器错误 C3437 在已指定 /source-charset、/execution-charset 或 /utf-8 时,不支持 #pragma execution_character_set
编译器错误 C3438 “context”:“value”不可应用于托管/WinRT 类
编译器错误 C3439 layout_version(number):版本号无效
编译器错误 C3440 “declaration”:layout_version(number) 与以前的声明不兼容
编译器错误 C3441 “declaration”:“keyword”不能在类已定义后应用
编译器错误 C3442 正在初始化多个联合成员:“member1”和“member2”
编译器错误 C3443 “class”的默认成员初始化表达式是递归的
编译器错误 C3444 空的聚合类“class”必须使用“{}”进行初始化
编译器错误 C3445 type”的复制列表初始化不能使用显式构造函数
编译器错误 C3446 “class”:不允许对值类成员使用默认成员初始化表达式
编译器错误 C3447 条件运算符 ?: 的 operand 属于类型“void”,但 other-operand 既不是 throw 表达式也不属于类型“void”
编译器错误 C3448 标识符的数目必须与结构化绑定声明中数组元素或成员的数目相匹配
编译器错误 C3449 标识符的数目必须与类似于元组类型的结构化绑定中 std::tuple_size<type-name>::value 的值相匹配
编译器错误 C3450 “type”:不是特性;不能指定 [System::AttributeUsageAttribute]/[Windows::Foundation::Metadata::AttributeUsageAttribute]
编译器错误 C3451 “attribute”:不能将非托管特性应用于“type”
编译器错误 C3452 列出不是常量的参数成员
编译器错误 C3453 “attribute”:由于限定符“qualifier”不匹配,因此没有应用特性
编译器错误 C3454 类声明中不允许出现 [attribute]
编译器错误 C3455 “attribute”:没有任何特性构造函数匹配这些参数
编译器错误 C3456 托管/WinRT 类的声明上不允许出现 [source-annotation-attribute]
编译器错误 C3457 “attribute”:特性不支持未命名参数
编译器错误 C3458 “[attribute]”:已为“identifier”指定特性“[attribute]”
编译器错误 C3459 “[attribute]”:特性只允许出现在类索引器上(默认索引属性)
编译器错误 C3460 “type”:只能转发用户定义类型
编译器错误 C3461 “type”:只能转发托管/WinRT 类型
编译器错误 C3462 “type”:只能转发导入的类型
编译器错误 C3463 “type”:类型不允许出现在特性“implements”中
编译器错误 C3464 “type”:不能转发嵌套类型
编译器错误 C3465 若要使用类型“type”,必须引用程序集“assembly”
编译器错误 C3466 “type”:不能转发泛型类的专用化
编译器错误 C3467 “type”:此类型已被转发
编译器错误 C3468 “type”:只能将类型转发到程序集“identifier”不是程序集
编译器错误 C3469 “type”:不能转发泛型类
编译器错误 C3470 “class”:类不能同时具有索引器(默认索引属性)和运算符 []
编译器错误 C3471 新模块名称 module-name(在命令行上设置)与先前的名称 module-name 存在冲突
编译器错误 C3472 新的输出文件名称 filename(在命令行上设置)与先前的文件名称 filename 存在冲突
编译器错误 C3473 未指定任何输出路径名称或模块名称。
编译器错误 C3474 无法打开输出文件“filename”
编译器错误 C3475 输入文件“filename”中出现语法错误
编译器错误 C3476 无法打开用于输入的文件“filename”
编译器错误 C3477 lambda 不能出现在未计算的上下文中
编译器错误 C3478 “identifier”:无法通过复制捕获数组
编译器错误 C3479 lambda 不支持 SAL 注释
编译器错误 C3480 “variable”:lambda 捕获变量必须来自封闭函数范围
编译器错误 C3481 “identifier”:找不到 lambda 捕获变量
编译器错误 C3482 “this”只能在非静态成员函数中用作 lambda 捕获
编译器错误 C3483 “identifier”已经是 lambda 捕获列表的一部分
编译器错误 C3484 语法错误:返回类型前应为“->”
编译器错误 C3485 lambda 定义不能具有任何 cv 限定符(在 Visual Studio 2022 中已过时。)
编译器错误 C3486 lambda 的参数不能具有默认参数(在 Visual Studio 2022 中已过时)
编译器错误 C3487 “type”:所有返回表达式必须推导为相同类型:以前为“type”
编译器错误 C3488 当默认捕获模式为按引用捕获时,不允许使用“&identifier
编译器错误 C3489 当默认捕获模式为按复制捕获时,需要“&identifier
编译器错误 C3490 无法修改“identifier”,因为正在通过 const 对象对其进行访问
编译器错误 C3491 “identifier”:无法在非可变 lambda 中修改通过复制捕获
编译器错误 C3492 “identifier”:不能捕获匿名联合的成员
编译器错误 C3493 无法隐式捕获“identifier”,因为尚未指定默认捕获模式
编译器错误 C3494 无法显式捕获“this”,因为封闭的捕获模式不允许使用它
编译器错误 C3495 “identifier”:捕获中的标识符必须是含自动存储持续时间(在 lambda 的访问范围中声明)的变量
编译器错误 C3496 “this”始终按值捕获: 已忽略“&”
编译器错误 C3497 无法构造 lambda 的实例
编译器错误 C3498 “identifier”:无法捕获具有托管/WinRT 类型的变量
编译器错误 C3499 已指定返回类型为 void 的 lambda 无法返回值

另请参阅

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