编译器错误 C2400 - C2499

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

重要

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
编译器错误 C2400 “context”中的内联汇编程序语法错误;发现“token”
编译器错误 C2401 “identifier”:寄存器必须为“context”中的基
编译器错误 C2402 “identifier”:寄存器必须为“context”中的索引
编译器错误 C2403 “identifier”:寄存器必须为“context”中的基/索引寄存器
编译器错误 C2404 “identifier”:“context”中的寄存器非法
编译器错误 C2405 带偏移量的短前向引用非法
编译器错误 C2406 “identifier”:在“context”中未定义名称
编译器错误 C2407 “context”中的“float”寄存器非法
编译器错误 C2408 “context”中 PTR 运算符上的类型非法
编译器错误 C2409 “context”中用作运算符的类型非法
编译器错误 C2410 “identifier”:“context”中的成员名称不明确
编译器错误 C2411 “identifier”:“context”中的结构/联合成员非法
编译器错误 C2412 “label”:重定义了不区分大小写的标签
编译器错误 C2413 “identifier”:对齐大小非法
编译器错误 C2414 操作数数目非法
编译器错误 C2415 操作数类型不正确
编译器错误 C2416 不能在此上下文中应用属性“attribute”
编译器错误 C2417 在“context”中除以 0
编译器错误 C2418 无法删除浏览器文件:filename
编译器错误 C2419 在“context”中对 0 求模
编译器错误 C2420 “identifier”:上下文中的符号非法
编译器错误 C2421 PTR 运算符在“context”中与寄存器一起使用
编译器错误 C2422 “context”中的段重写非法
编译器错误 C2423 “number”:非法缩放
编译器错误 C2424 “token”:“context”中的表达式不正确
编译器错误 C2425 “token”:“context”中的非常量表达式
编译器错误 C2426 “token”:“context”中的运算符非法
编译器错误 C2427 “class”:无法在此范围中定义类
编译器错误 C2428 “operation”:在“bool”类型的操作数上不允许
编译器错误 C2429 “language feature”需要编译器标志“compiler option”
编译器错误 C2430 “context”中有一个以上的索引寄存器
编译器错误 C2431 “context”中的索引寄存器非法
编译器错误 C2432 “context”中对 16 位数据的非法引用
编译器错误 C2433 “identifier”:数据声明上不允许使用“modifier”
编译器错误 C2434 “symbol”:使用 __declspec(process) 声明的符号无法在 /clr:pure 模式下动态初始化
编译器错误 C2435 “var”:动态初始化需要托管的 CRT,不能使用 /clr:safe 进行编译
编译器错误 C2436 “identifier”:构造函数初始化表达式列表中的成员函数或嵌套类
编译器错误 C2437 “identifier”:已初始化
编译器错误 C2438 “identifier”:无法通过构造函数初始化静态类数据
编译器错误 C2439 “identifier”:无法初始化成员
编译器错误 C2440 “conversion”:无法从“type_1”转换为“type_2”
编译器错误 C2441 “variable”:使用 __declspec(process) 声明的符号必须是 /clr:pure 模式下的 const
编译器错误 C2442 “identifier”:嵌套命名空间定义不能是内联的或具有属性
编译器错误 C2443 操作数大小冲突
编译器错误 C2444 “identifier”:使用了 ANSI 原型,找到“type”,应输入“{”或“;”
编译器错误 C2446 “operator”:没有从“type_1”到“type_2”的转换
编译器错误 C2447 “{”:缺少函数标题(是否是老式的形式表?)
编译器错误 C2448 “identifier”:函数样式的初始值设定项似乎是函数定义
编译器错误 C2449 在文件范围内发现 "{" (是否缺少函数头?)
编译器错误 C2450 “type”类型的 switch 表达式是非法的
编译器错误 C2451 “type”类型的条件表达式非法
编译器错误 C2452 “type”:safe_cast 的源类型无效
编译器错误 C2453 “type”:safe_cast 的目标类型无效
编译器错误 C2454 "identifier":不能使用限定名称声明命名空间别名
编译器错误 C2455 “class”从导入的基类派生的 WinRT ref 类不能是抽象的。
编译器错误 C2456 “class”,未密封的 ref 类不能具有公共可见构造函数。 密封类,或将构造函数指定为“internal”、“protected private”或“private”。
编译器错误 C2457 “identifier”:预定义的宏不能出现在函数体的外部
编译器错误 C2458 “identifier”:定义范围内的重定义
编译器错误 C2459 “identifier”:正在定义;无法添加为匿名成员
编译器错误 C2460 “identifier_1”:使用正在定义的“identifier_2”
编译器错误 C2461 “class”:构造函数语法缺少形参
编译器错误 C2462 “identifier”:不能在“new-expression”中定义类型
编译器错误 C2464 “type”:不能使用“new”来分配引用
编译器错误 C2465 不能在括号内定义匿名类型
编译器错误 C2466 不能分配常量大小为 0 的数组
编译器错误 C2467 匿名“user_defined_type”的声明非法
编译器错误 C2468 构造函数不能为类或具有虚拟基类的结构中的“constexpr
编译器错误 C2469 new”:无法分配“void”对象
编译器错误 C2470 “function”:看起来像函数定义,但却没有参数列表;跳过明显的函数体
编译器错误 C2471 无法更新程序数据库“filename”
编译器错误 C2472 “function”无法在托管代码“message”中生成;请使用 /clr 进行编译以生成混合映像
编译器错误 C2473 “identifier”:看起来像函数定义,但却没有参数列表
编译器错误 C2474 “identifier”:缺少相邻的分号,可能是关键字或标识符
编译器错误 C2475 “identifier”:重新定义;“constexpr”说明符不匹配
编译器错误 C2477 “member”:静态数据成员无法通过派生类初始化
编译器错误 C2478 声明与“instance”不兼容
编译器错误 C2479 “identifier”:“allocate( )”仅对静态作用域的数据项有效
编译器错误 C2480 “identifier”:“thread”仅对静态作用域的数据项有效
编译器错误 C2481 “identifier”:“thread_local”仅对命名空间或块范围内的静态成员和变量有效
编译器错误 C2482 “identifier”:托管 /WINRT 代码中不允许线程本地数据的动态初始化
编译器错误 C2483 “identifier”:在托管 /WINRT 代码中,不能使用线程存储持续时间声明具有析构函数或非聚合类型的对象
编译器错误 C2485 “identifier”:无法识别的扩展属性
编译器错误 C2486 仅在具有“naked”属性的函数中允许“__LOCAL_SIZE
编译器错误 C2487 “identifier”:dll 接口类的成员不能使用 dll 接口声明
编译器错误 C2488 “identifier”:“naked”只能应用到非成员函数定义
编译器错误 C2489 “identifier”:在“naked”函数的函数范围内,不允许使用初始化自动变量或寄存器变量
编译器错误 C2490 在具有“naked”属性的函数中不允许使用“keyword”
编译器错误 C2491 “identifier”:不允许 dllimport function 的定义
编译器错误 C2492 “variable”: 具有线程存储持续时间的数据可能没有 dll 接口
编译器错误 C2493 __based 的形式非法
编译器错误 C2494 “keyword”不能从筛选器表达式或 __finally/finally 块内调用
编译器错误 C2495 “identifier”:__declspec(noexcept)”只能应用于函数声明或定义
编译器错误 C2496 “identifier”:“selectany”只能应用于具有外部链接的数据项
编译器错误 C2497 “identifier”:“implementation_key”只能应用于函数声明
编译器错误 C2498 “function”:“novtable”仅可应用于类声明或定义
编译器错误 C2499 “class”:类不能是其自身的基类

另请参阅

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