本部分列出的文章描述了 Microsoft C/C++ 编译器警告消息 C5200 到 C5399。
重要
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 |
---|---|
编译器警告(等级 1)C5200 | 功能“feature-name”需要编译器标志“option-name” |
编译器警告(等级 1)C5201 | 模块声明只会出现在翻译单元的开始处,除非使用的是全局模块片段 |
编译器警告(等级 1)C5202 | 全局模块片段仅可包含预处理器指令 |
编译器警告(等级 1)C5203 | 在 C++20 中,“explicit”后面带圆括号的声明符名称视为显式说明符 |
编译器警告(等级 3,关闭)C5204 | “type-name”:类包含虚函数,但其常用的析构函数不是虚函数;从该类派生的对象实例可能无法进行正确析构 |
编译器警告(等级 4)C5205 | 删除具有非虚拟析构函数的抽象类“type-name”将导致未定义的行为 |
编译器警告(等级 3)C5206 | 推导出的协同例程的返回类型是非标准扩展 |
编译器警告(等级 1)C5207 | 简单要求断定了表达式“e->id ”的有效性。 你指的是“{ e } -> id ”? 可以使用“{ e->id } ”禁止显示此警告 |
编译器警告(级别 1)C5208 | typedef 名称中使用的未命名的类不能声明非静态数据成员、成员枚举或成员类以外的成员 |
编译器警告(等级 1)C5209 | init-capture 的 C++20 语法已更改为“& ...opt identifier initialize” |
编译器警告(等级 1)C5210 | “name”不是有效的标头单元引用;忽略 |
编译器警告(等级 1)C5212 | “name”不是有效的命名引用;视为对文件的引用 |
编译器警告(等级 1)C5213 | 将“name”命名引用视为命名分区,但未指定名称;视为对文件的引用 |
编译器警告(等级 4,关闭)C5214 | C++20 中已弃用将“modifier”应用于具有可变限定类型的操作数 |
编译器警告(等级 4,关闭)C5215 | C++20 中已弃用具有可变限定类型的函数参数“name” |
编译器警告(等级 4,关闭)C5216 | C++20 中已弃用可变限定返回类型“name” |
编译器警告(等级 4,关闭)C5217 | C++20 中已弃用包含可变项的结构化绑定声明 |
编译器警告(等级 1)C5218 | 使用不符合的开关“/Zc:sizedDealloc- ”或“/Zc:alignedNew- ”时,销毁删除的行为可能与预期不同 |
编译器警告(等级 2,关闭)C5219 | 从“type-1”隐式转换到“type-2”,可能会丢失数据 |
编译器警告(等级 4,关闭)C5220 | “name”:具有可变限定类型的非静态数据成员不再意味着编译器生成的复制/移动构造函数和复制/移动赋值运算符不常用 |
编译器警告(等级 1)C5221 | xfg::rename 已弃用。 |
编译器警告(等级 3)C5222 | “attribute-name”:所有未设定范围的属性名称均保留便于未来标准化 |
编译器警告(等级 3)C5223 | 属性命名空间“msvc”中的所有属性名称均保留用于实现 |
编译器警告(等级 3)C5224 | 属性命名空间“namespace-name”中的所有属性名称均保留便于未来标准化 |
编译器警告(等级 1)C5225 | “symbol”:专用模块片段中定义的导出内联函数是非标准扩展 |
编译器警告(等级 1)C5226 | “symbol”:专用模块片段中定义的导出模板没有可达成的实例化 |
编译器警告(等级 4)C5227 | 非标准扩展,已将“symbol”解析为“value”,后者在 /permissive- 开启时是不可见的。 |
编译器警告(等级 4)C5228 | 非标准扩展,“identifier”已解析为依赖基的成员。 在 /permissive- 下不允许使用此查找。 |
编译器警告(等级 4)C5229 | 非标准扩展,通过名称查找找到了隐藏的友元函数“function-name”,在 /permissive- 下不允许这样做。 |
编译器警告 C5230 | 非标准扩展,“identifier”在 /permissive 下解析为“symbol-1”。 在 /permissive- 下解析为“symbol-2”。 |
编译器警告(等级 3)C5231 | 表达式“co_await promise.final_suspend() ”必须为非引发 |
编译器警告(等级 1)C5232 | 在 C++20 中,此比较以递归方式调用“name” |
编译器警告(等级 4,关闭)C5233 | 未使用显式 lambda 捕获“identifier” |
编译器警告(等级 1)C5234 | 文件系统错误:“filename”不是有效的标头名称;忽略 |
编译器警告(等级 1)C5235 | JSON 分析错误:消息;忽略“filename” |
编译器警告(等级 1)C5236 | JSON 格式错误:消息;忽略“filename” |
编译器警告(等级 1)C5237 | 无法将标头单元项“name”解析为“filename”中的头文件;忽略项 |
编译器警告(等级 1)C5238 | 文件系统错误:无法打开“filename”进行读取;忽略 |
编译器警告(等级 4)C5239 | 'symbol':从函数声明的 __declspec(nothrow) 调用了可能引发异常的函数。 如果引发了异常,则可能会发生未定义的行为。 |
编译器警告(等级 4)C5240 | “attribute-name”:在此语法位置将忽略属性 |
编译器警告(等级 1)C5241 | 使用“/exportHeader ”查找标头名称的规则已弃用;首选“/headerName:name value=filename” |
编译器警告(等级 1)C5242 | pragma“identifier”中语法错误 |
编译器警告(等级 1,关闭)C5243 | “type-name”:由于 ABI 限制,使用不完整的类“class-name”可能会导致潜在的一个定义规则冲突 |
编译器警告(等级 1)C5244 | “#include <filename>”(在模块“module-name-1”的 purview 中)出现错误。 请考虑将该指令移到模块声明之前,或将文本包含内容替换为“import <module-name-2>;”。 |
编译器警告(等级 4,关闭)C5245 | “function”:已删除具有内部链接的未引用函数 |
编译器警告(等级 1,关闭)C5246 | “member”:子对象的初始化应括在大括号内 |
编译器警告(等级 1,关闭)C5247 | 节“section-name”是为 C++ 动态初始化保留的。 手动创建节会干扰 C++ 动态初始化,并可能导致未定义的行为 |
编译器警告(等级 1,关闭)C5248 | 节“section-name”是为 C++ 动态初始化保留的。 手动放入节中的变量可能已优化,并且其相对于编译器生成的动态初始值设定项的顺序未指定。 |
编译器警告(等级 1,关闭)C5249 | 类型为“enumeration_name”的“bitfield”已命名枚举器,其值不能以给定的位字段宽度“bitfield_width”表示。 |
编译器警告(等级 3,关闭)C5250 | “function_name”:未声明内部函数。 |
编译器警告(等级 4,关闭)C5251 | segment-name 在包含标头后更改 |
编译器警告(等级 4)C5252 | 多种不同类型导致相同的 XFG 类别-哈希 hash-value;PDB 将仅记录其中一个类型的信息 |
编译器警告(等级 4)C5253 | 非本地 lambda 不能具有捕获默认值 |
编译器警告(等级 4,关闭)C5254 | 语言功能“简要静态断言”需要编译器标志“/std:c++17” |
编译器警告(等级 3)C5255 | 遇到未终止的双向字符:“U+XXXX” |
编译器警告(等级 1,关闭)C5256 | “enumeration”:具有固定基础类型的枚举的非定义声明只能作为独立声明 |
编译器警告(等级 1 或 4)C5257 | “enumeration”:之前在没有固定基础类型的情况下声明了枚举 |
编译器警告(等级 4,关闭)C5258 | 此用途不需要显式捕获“symbol” |
编译器警告(级别 4,关闭)C5259 | “specialized-type”:显式专用化需要“template <>” |
编译器警告(级别 1)C5260 | 常数变量“variable-name”在包含的标头文件上下文中具有内部链接,但在导入的标头单元上下文中具有外部链接;如果要跨翻译单元共享它,请考虑将其声明为“内联”;若要表达将它本地用于此翻译单元的意向,则考虑将其声明为“静态” |
编译器警告(级别 2)C5261 | 没有整数类型可以表示枚举“enum-name”中的所有枚举器值 |
编译器警告(级别 1,错误,关闭)C5262 | 此处发生隐式下沉;是否缺少中断语句? 在事例之间有意省略 break 语句时使用 [[fallthrough]] |
编译器警告(级别 4,关闭)C5263 | 对临时对象调用“std::move ”会阻止复制省略 |
编译器警告(级别 4,关闭)C5264 | “variable-name”:未使用“const”变量 |
编译器警告(级别 1)C5265 | 无法打开搜索路径“path” |
编译器警告(级别 4,关闭)C5266 | 返回类型的“const”限定符不起作用 |
编译器警告 C5267 | 已弃用“type”的隐式复制构造函数/赋值运算符的定义,因为它具有用户提供的赋值运算符/复制构造函数 |
编译器警告(级别 1)C5268 | 无法在固定地址 0xaddress 分配内存。 如果需要位相同的 .pch 文件,请使用 /Yb 指定特定基址。 |
编译器警告(级别 1)C5269 | 无法在固定地址 0xaddress 分配 PCH 内存。 如果需要位相同的 .pch 文件,请使用 /Ym 指定特定基址。 |
编译器警告(级别 3)C5270 | 选项“switch name”不允许使用“value”;允许的值包括:值列表 |
编译器警告(级别 4)C5271 | 以前导入的程序集“assembly1”与要导入的程序集“assembly2”具有相同名称。 这是有意为之吗? |
编译器警告(级别 1)C5272 | 引发不可复制类型为“type”的对象是非标准行为。 如果需要在运行时复制,则会像 memcpy 一样进行复制。 |
编译器警告(级别 1)C5273 | 行为变更:匿名类型上的 _Alignas 不再被忽略(提升的成员将对齐) |
编译器警告(级别 1)C5274 | 行为变更:_Alignas 不再适用于类型“type”(仅适用于声明的数据对象) |
编译器警告(错误)C5275 | 正在“/clr ”下导入 facade 程序集“name”;缺少选项“/clr:netcore ”? |
编译器警告(等级 1,错误)C5300 | “#pragma omp atomic”:“operator”的左操作数必须与赋值表达式的左侧匹配 |
编译器警告(级别 1)C5301 | “#pragma omp for”:循环条件使用“comparison”时,“loop-index”会增加;非终止循环? |
编译器警告(级别 1)C5302 | “#pragma omp for”:循环条件使用“comparison”时,“loop-index”会减少;非终止循环? |
编译器警告(级别 1)C5303 | 标记为 [[msvc::intrinsic]] 的函数未导致无操作强制转换 |
编译器警告(级别 1)C5304 | 由从此模块导出的 using-declaration“name1”指定的声明具有内部链接,并且在模块外部使用此类名称的格式不正确;请考虑声明 'name2' 'inline ',以在此模块外部使用它 |
编译器警告(级别 1)C5305 | “name”:已忽略显式实例化定义后面的显式实例化声明 |