Microsoft C/C++ 编译器警告 C5000 到 C5199
本部分中的文章介绍了 Microsoft C/C++ 编译器警告消息 C5000 到 C5199。
重要
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 |
---|---|
编译器警告 C5022 | “type”:指定了多个移动构造函数 |
编译器警告 C5023 | “type”: 指定了多个移动赋值运算符 |
编译器警告(等级 4,关闭)C5024 | “type”: 已将移动构造函数隐式定义为已删除 |
编译器警告(等级 4,关闭)C5025 | “type”: 已将移动赋值运算符隐式定义为已删除 |
编译器警告(等级 1 和等级 4,关闭)C5026 | “type”: 已将移动构造函数隐式定义为已删除 |
编译器警告(等级 1 和等级 4,关闭)C5027 | “type”: 已将移动赋值运算符隐式定义为已删除 |
编译器警告(等级 1)C5028 | “name”:定义中未指定已在之前的声明 (number) 中指定的对齐 |
编译器警告(等级 4,关闭)C5029 | 使用了非标准扩展: C++ 中的对齐属性只适用于变量、数据成员和标记类型 |
编译器警告(等级 3)C5030 | 未识别属性“attribute-name” |
编译器警告(等级 4,关闭)C5031 | #pragma warning(pop) :可能不匹配,正在弹出的警告状态已推送到其他文件 |
编译器警告(等级 4,关闭)C5032 | 检测到 #pragma warning(push) ,但没有对应的 #pragma warning(pop) |
编译器警告(级别 1)C5033 | “storage-class”不再是受支持的存储类 |
编译器警告(等级 5,关闭)C5034 | 使用内部“intrinsic”会导致函数 function-name 被编译为来宾代码 |
编译器警告(等级 5,关闭)C5035 | 使用功能“feature”会导致函数 function-name 被编译为来宾代码 |
编译器警告(等级 1)C5036 | 在将 /hybrid:x86arm64 从“type1”编译为“type2”时的 varargs 函数指针转换 |
编译器警告(错误)C5037 | “member-function”:类模板成员的外部定义不能有默认参数 |
编译器警告(等级 4,关闭)C5038 | 数据成员“member1”将在数据成员“member2”后初始化 |
编译器警告(等级 4,关闭)C5039 | “function”:可能引发函数的指针或引用传递到 -EHc 下的外部 extern C 函数。 如果此函数引发异常,则可能发生未定义的行为。 |
编译器警告(等级 3)C5040 | 动态异常规范仅在 C++14 及更早版本中有效;视为 noexcept(false) |
编译器警告(等级 1,关闭)C5041 | “definition”:不需要对 constexpr 静态数据成员进行外部定义,且在 C + + 17 中弃用了该类定义 |
编译器警告(等级 3,关闭)C5042 | “declaration”:不能将在块范围的函数声明指定为标准 C++ 中的“inline”;删除“inline”说明符 |
编译器警告(等级 2)C5043 | “specification”:异常规范与前面的声明不匹配 |
编译器警告(等级 4)C5044 | 命令行选项 option-name 的参数指向不存在的路径“path-name” |
编译器警告(等级 4)C5045 | 如果指定了 /Qspectre 开关,编译器会插入内存负载的 Spectre 缓解 |
编译器警告(等级 2)C5046 | “function”:未定义涉及内部链接类型的符号 |
编译器警告(等级 1)C5047 | 不支持将非标准的 __if_exists 用于模块 |
编译器警告(等级 1)C5048 | 使用宏“macroname”可能会导致非确定性输出 |
编译器警告(等级 1)C5049 | “string”:嵌入完整路径可能会产生计算机相关的输出 |
编译器警告(等级 1)C5050 | 导入模块“module_name”时可能不兼容的环境:issue |
编译器警告(等级 1)C5051 | 属性“attribute-name”至少需要“standard-level”;已忽略 |
编译器警告(等级 3,关闭)C5052 | 关键字“keyword-name”已引入 C++<version>,并且需要使用“option-name”命令行选项 |
编译器警告(等级 1)C5053 | C++17 和更早版本中对“explicit(<expr>) ”的支持是供应商扩展 |
编译器警告(级别 4)C5054 | 运算符'operator-name':已在不同类型的枚举之间弃用 |
编译器警告(级别 1)C5055 | 运算符“operator-name”:已在枚举和浮点类型之间弃用 |
编译器警告(级别 1)C5056 | 运算符“operator-name”:已弃用数组类型 |
编译器警告(等级 1)C5057 | 已存在对“name”的标头单位引用。 忽略标头单元“header-name” |
编译器警告(等级 1)C5058 | 文件系统错误:找不到标头单位“unit-name”的头文件“file-name” |
编译器警告 C5059 | 当前不支持运行时检查和地址擦除系统 - 正在禁用运行时检查 |
编译器警告(等级 4)C5060 | 当前不支持 /Qpar 和地址擦除系统 - 正在禁用自动并行化 |
编译器警告(等级 4)C5061 | 将逗号运算符用作下标表达式的规则已弃用 |
编译器警告(等级 4)C5062 | 不再支持“type-1”和“type-2”之间的枚举直接列表初始化 |
编译器警告(等级 1)C5063 | 在 manifestly 常量计算表达式中,“std::is_constant_evaluated ”的计算结果始终为 true |
编译器警告(等级 1)C5072 | 已启用 ASAN 且未发出调试信息。 启用调试信息,以便更好地报告 ASAN 错误 |
编译器警告(等级 1)C5081 | /GENPROFILE 、/FASTGENPROFILE 或 /LTCG:PGI 不支持安全热补丁,且禁用安全热补丁。 |
编译器警告(等级 1)C5100 | 保留 __VA_ARGS__ 以供在可变参数宏中使用 |
编译器警告(等级 1)C5101 | 使用类函数宏参数列表中的预处理器指令是未定义的行为 |
编译器警告(等级 1)C5102 | 忽略无效的命令行宏定义“value” |
编译器警告(等级 1)C5103 | 粘贴“token1”和“token2”不会产生有效的预处理标记 |
编译器警告(等级 1)C5104 | 在宏替换列表中找到“string1# string2”,你是指“string1""# string2”吗? |
编译器警告(等级 1)C5105 | 生成“已定义”的宏扩展具有未定义的行为 |
编译器警告(等级 1)C5106 | 使用不同参数名称重新定义宏 |
编译器警告(等级 1)C5107 | 缺少终止字符“char” |
编译器警告(等级 1)C5108 | 保留 __VA_OPT__ 以供在可变参数宏中使用 |
编译器警告(级别 1)C5109 | 在宏中使用 __VA_OPT__ 需要“/Zc:preprocessor ” |
编译器警告(级别 4,关闭)C5110 | __VA_OPT__ 是 C++20 或 C23 之前的扩展 |