本文档部分提到的文章解释了编译器生成的一部分错误消息。
重要
Visual Studio 编译器和生成工具可报告多种类型的错误和警告。 发现错误或警告后,生成工具可做出有关代码意向的假设并尝试继续,因此,可能会同时报告更多问题。 如果工具做出错误假设,则后续错误或警告可能不适于你的项目。 纠正项目中的问题时,请始终先纠正报告的第一个错误或警告,然后在通常情况下重新生成。 一个修复程序可以解决多个后续错误。
若要在 Visual Studio 中获取有关特定诊断消息的帮助内容,请在“输出”窗口中选择该消息,然后按 F1 键。 Visual Studio 会打开该错误的文档页(如果存在)。 还可以使用页面顶部的搜索工具查找有关特定错误或警告的文章。 或者,按工具浏览错误和警告列表,并在此页面上的内容列表中键入内容。
注意
并非所有 Visual Studio 错误或警告均有记录。 在许多情况下,诊断消息将提供所有可用信息。 如果登录此页面并认为错误或警告消息需要其他说明,请使用此页面上的反馈按钮告知我们。 如果认为错误或警告是错误的,或者发现了工具集的其他问题,请在开发者社区网站上报告产品问题。 还可以在 IDE 中发送反馈并输入 bug。 在 Visual Studio 中,转到菜单栏并选择 帮助 > 发送反馈 > 报告问题,或使用 帮助 > 发送反馈 > 建议功能提交建议。 创建了一些编译程序错误主题,这些主题不是由编译程序发出的,但现在会重定向到此页面。
可以在 Microsoft Q&A C++ 论坛中找到有关错误和警告的其他帮助。 或者,在 Visual Studio C++ 开发者社区网站上搜索错误或警告编号。 还可以搜索 Stack Overflow 以查找解决方案。
有关指向其他帮助和社区资源的链接,请参阅 Visual C++ 帮助和社区。
错误消息
错误 | 消息 |
---|---|
编译器错误 C2600 | “function”: 不能定义编译器生成的特殊成员函数(必须首先在类中声明) |
编译器错误 C2601 | “function”: 本地函数定义非法 |
编译器错误 C2602 | “class::标识符”不是“class”的基类成员。 |
编译器错误 C2603 | “function”: 函数中带有构造函数/析构函数的块级作用域静态对象太多 |
编译器错误 C2604 | “identifier”: 无法实现多个接口方法 |
编译器错误 C2605 | “identifier”: 此方法是托管/WinRT 类中的保留方法 |
编译器错误 C2606 | “class1”无法重新实现“member”,因为它从运行时基类“class2”继承而来。 |
编译器错误 C2607 | 静态断言失败 |
编译器错误 C2608 | 宏参数列表中包含无效令牌“token” |
编译器错误 C2609 | 宏参数列表中缺少“)” |
编译器错误 C2610 | “class::member”: 不是可以被默认化的特殊成员函数 |
编译器错误 C2611 | “token”:“~”后面包含非法字符(需要标识符) |
编译器错误 C2612 | 基/成员初始化表达式列表中包含非法的尾部“character” |
编译器错误 C2613 | 基类列表中包含非法的尾部“character” |
编译器错误 C2614 | “class”: 非法的成员初始化: “identifier” 不是基类或成员 |
编译器错误 C2615 | “offsetof ”不能应用于非类类型“类型” |
编译器错误 C2616 | “conversion”: 无法隐式将非左值“type1”转换为非常量的“type2” |
编译器错误 C2617 | “function”: return 语句不一致 |
编译器错误 C2618 | offsetof 中包含无效成员指示符 |
编译器错误 C2619 | “identifier”:匿名结构/联合中不允许使用静态数据成员。 |
编译器错误 C2620 | 已过时。 |
编译器错误 C2621 | 已过时。 |
编译器错误 C2622 | 已过时。 |
编译器错误 C2623 | 已过时。 |
编译器错误 C2624 | “scope::type”:局部类不能用于声明“extern”变量 |
编译器错误 C2625 | “identifier”: 非法的联合成员;类型“type”是引用类型 |
编译器错误 C2626 | “identifier”: 匿名结构/联合中不允许使用专用/受保护的数据成员 |
编译器错误 C2627 | “function”: 匿名联合中不允许有成员函数 |
编译器错误 C2628 | “type1”后接“type2”是非法的(你是否忘记了“;”?) |
编译器错误 C2629 | identifier:匿名结构/联合不能声明嵌套类型 |
编译器错误 C2630 | 在应是逗号分隔列表的位置找到了“symbol” |
编译器错误 C2631 | “identifier”: 别名模板中不能定义类或枚举 |
编译器错误 C2632 | “type1”后面跟着“type2”是非法的 |
编译器错误 C2633 | “identifier”:“inline”是构造函数的唯一合法存储类 |
编译器错误 C2634 | “class::member”: 指向引用成员的指针是非法的 |
编译器错误 C2635 | 不能将“type1*”转换为“type2*”;这暗示了从虚拟基类进行转换。 |
编译器错误 C2636 | “identifier”: 指向引用成员的指针是非法的 |
编译器错误 C2637 | “identifier”: 不能修改指向数据成员的指针 |
编译器错误 C2638 | "identifier": 指向成员的指针上的 __based 修饰符非法 |
编译器错误 C2639 | 推导指引的尾随返回类型“type”应是“class template”的特殊化 |
编译器错误 C2640 | “abstract declarator”:引用上的 __based 修饰符非法 |
编译器错误 C2641 | 无法推断 '模板名称' 的模板参数 |
编译器错误 C2642 | 同一类模板的两个推导指南声明不能具有等效的参数列表和模板头 |
编译器错误 C2643 | 推导指南应在与相应的类模板“模板名称”相同的范围内声明 |
编译器错误 C2644 | 推导指南应具有与相应类模板“模板名称”相同的访问权限 |
编译器错误 C2645 | 指向成员的指针没有限定名(找到“:: *”) |
编译器错误 C2646 | 全局或命名空间范围的匿名结构体/共用体必须声明为静态 |
编译器错误 C2647 | “operator”: 无法在“type2”上取消引用“type1” |
编译器错误 C2648 | “identifier”: 将成员用作默认参数需要静态成员 |
编译器错误 C2649 | “identifier”: 不是“class/struct/union” |
编译器错误 C2650 | “operator”: 不能是虚拟函数 |
编译器错误 C2651 | type:'::'的左边必须是类、结构或联合体 |
编译器错误 C2652 | “identifier”: 非法复制构造函数: 第一个参数不得为“type” |
编译器错误 C2653 | “identifier”: 不是类或命名空间名称 |
编译器错误 C2654 | “identifier”: 尝试访问成员函数外部的成员 |
编译器错误 C2655 | “identifier”: 当前范围内的定义或重新声明非法 |
编译器错误 C2656 | “function”: 函数不能作为位域 |
编译器错误 C2657 | 在语句的开头找到“class::*”(是否忘记指定类型?) |
编译器错误 C2658 | “identifier”: 匿名结构/联合中的重定义 |
编译器错误 C2659 | “operator”: 函数用作左操作数 |
编译器错误 C2660 | “function”: 函数不采用 number 参数 |
编译器错误 C2661 | “function”: 没有重载函数采用 number 参数 |
编译器错误 C2662 | 『function』:无法将“this”指针从『type1』转换为『type2』 |
编译器错误 C2663 | “function”:没有重载函数对“this ”指针进行有效的转换 |
编译器错误 C2664 | “function”: 无法将参数number从“type1”转换为“type2” |
编译器错误 C2665 | “function”:没有重载函数可以转换所有参数类型 |
编译器错误 C2666 | “function”:重载函数具有类似的转换 |
编译器错误 C2667 | “function”:没有哪个重载函数具有最佳转换效果 |
编译器错误 C2668 | “function”: 对重载函数的调用不明确 |
编译器错误 C2669 | 匿名联合中不能使用成员函数 |
编译器错误 C2670 | “function”: 函数模板无法从类型“type”转换参数 number |
编译器错误 C2671 | function: 静态成员函数没有“this”指针 |
编译器错误 C2672 | “function”: 未找到匹配的重载函数 |
编译器错误 C2673 | function: 全局函数没有 “this” 指针 |
编译器错误 C2674 | 在此上下文中不允许出现泛型声明 |
编译器错误 C2675 | 一元“operator”:“type”不定义该运算符或到预定义运算符可接收类型的转换 |
编译器错误 C2676 | 二元“operator”:“type”不定义该运算符或到预定义运算符可接收类型的转换 |
编译器错误 C2677 | 二元运算符 'operator': 找不到接受 'type' 类型的全局运算符(或不存在可接受的转换) |
编译器错误 C2678 | 二元运算符:未找到需要左侧操作数为类型type的运算符(或者没有可接受的转换) |
编译器错误 C2679 | 二元“operator”: 未找到采用“type”类型右侧操作数的运算符(或者没有可接受的转换) |
编译器错误 C2680 | “type”: cast 的目标类型无效 |
编译器错误 C2681 | “type”: cast 的表达式类型无效 |
编译器错误 C2682 | 无法使用“cast”将“type1”转换为“type2” |
编译器错误 C2683 | “cast”:“type”不是多态类型 |
编译器错误 C2684 | “declarator”: 托管/WinRT 类中不支持删除的和默认的函数 |
编译器错误 C2685 | “declarator”: 显式限制说明符不支持删除的和默认的函数 |
编译器错误 C2686 | 不能重载具有相同参数类型的静态和非静态成员函数 |
编译器错误 C2687 | “type”: 异常声明不能为“void”,也不能表示不完整类型或指向不完整类型的指针或引用 |
编译器错误 C2688 | “type::member”: 协变返回不支持用于 varargs 函数的多重或虚拟继承 |
编译器错误 C2689 | 「function」:不能在局部类中定义友元函数 |
编译器错误 C2690 | “operator”: 不能对托管/WinRT 数组执行指针算术 |
编译器错误 C2691 | “type”: 托管/WinRT 数组元素不能有此元素类型 |
编译器错误 C2692 | “function”:“/clr”选项要求 C 编译器中完全保持原型的函数 |
编译器错误 C2693 | “operator”: 比较托管/WinRT 数组的引用是非法的 |
编译器错误 C2694 | “override_function”: 重写虚拟函数的限制性异常规范比基类虚成员函数“base_function”少 |
编译器错误 C2695 | “override_function”: 重写虚拟函数只是在调用约定方面不同于于“base_function” |
编译器错误 C2696 | 无法创建托管/WinRT 类型“type”的临时对象 |
编译器错误 C2697 | 已过时。 |
编译器错误 C2698 | “declaration1”的使用声明不能与“declaration2”的现有使用声明同时存在。 |