默认情况下关闭的编译器警告

该编译器包括默认情况下处于关闭的警告。 如果默认关闭警告,大多数用户会不希望看见它。 但是,用以下选项之一可以启用此警告。

  • #pragma warning(default : warning_number)
    指定的警告 (warning_number) 在其默认级别中启用。 该警告的文档包含该警告的默认级别。

  • #pragma warning(warning_level : warning_number)
    指定的警告 (warning_number) 在其指定级别 (warning_level) 中启用。

  • /Wall
    /Wall 启用默认情况下处于关闭状态的所有警告。

默认情况下,这些警告是关闭的。

C4061(级别 4)

枚举器“identifier”(在枚举“enumeration”的 switch 中)没有被 case 标签显式处理

C4062(级别 3)

枚举器“identifier”在枚举“enumeration”的 switch 中没有被处理

C4191 (级别 3)

“operator/operation”:从“表达式的类型”到 “要求类型”的不安全转换

C4242(级别 4)

“标识符”:从“type1”转换到“type2”,可能丢失数据

C4254(级别 4)

“运算符”:从“type1”转换为“type2”,可能丢失数据

C4255(级别 4)

“函数”:未给出函数原型: 将“()”转换为“(void)”

C4263(级别 4)

“函数”:成员函数不重写任何基类虚拟成员函数

C4264(级别 1)

“virtual_function”:没有对基“class”中的虚拟成员函数可用的重写;函数被隐藏

C4265 (级别 3)

“类”:类有虚函数,但析构函数不是虚拟的

C4266(级别 4)

“函数”:没有对基“type”中的虚拟成员函数可用的重写;函数被隐藏

C4287(级别 3)

“运算符”:符号/负常数不匹配

C4289(级别 4)

使用了非标准扩展 :“var”: 在 for 循环中声明的循环控制变量用在了 for 循环范围外

C4296(级别 4)

“运算符”: 表达式始终为 false

C4302 (级别 2)

“转换”:从“type1”到“type2”截断

C4350 (级别 1)

行为更改: 调用了“member1”而不是“member2”

C4355

“this”: 用于基成员初始值设定项列表

C4365 (级别 4)

“action”:从“type_1”转换到“type_2”,有符号/无符号不匹配

C4412 (级别 2)

“函数”: 函数签名包含类型 “type”;在纯代码与混合代码或本机代码之间传递 C++ 对象是不安全的

C4431 (级别 4)

缺少类型说明符 - 假定为 int。 注意: C 不再支持默认的 int

C4435(级别 4)

" class1 ":在/vd2下的对象布局会因虚拟基" class2 "

C4437(级别 4)

从虚拟基“到“class2 "的class1的dynamic_cast可以从上下文中失败

C4514 (级别 4)

“函数”:未引用的内联函数已移除

C4536 (级别 4)

“类型名称”:类型名超出了“limit”个字符的元数据限制

C4545 (级别 1)

逗号前的表达式计算为缺少参数列表的函数

C4546 (级别 1)

逗号前的函数调用缺少参数列表

C4547 (级别 1)

“运算符”:逗号前的运算符无效;应输入带副作用的运算符

C4548 (级别 1)

逗号前的表达式不起任何作用;应输入带副作用的表达式

C4549 (级别 1)

“运算符”:逗号前的运算符无效;是否希望使用“operator”?

C4555 (级别 1)

表达式无效;应输入带副作用的表达式

C4557 (级别 3)

“__assume”包含效果“effect”

C4571 (级别 4)

信息: 自 Visual C++ 7.1 之后,catch(…) 语义发生了变化;不再捕获结构化的异常(SEH)

C4619 (级别 3)

#pragma 警告:无警告号“number”

C4623 (级别 4)

“派生类”: 因为基类默认构造函数不可访问,所以未能生成默认构造函数

C4625 (级别 4)

“派生类”:因为基类复制构造函数不可访问,所以未能生成复制构造函数

C4626 (级别 4)

“派生类”:因为基类赋值运算符不可访问,所以未能生成赋值运算符

C4628 (级别 1)

-Ze 不支持二合字母。 字符序列“digraph”未解释为“char”的替换标记

C4640 (级别 3)

“实例”: 本地静态对象的结构是非线程安全的

C4641(级别 3)

XML 文档注释含有不明确的交叉引用。

C4668(级别 4)

没有将“symbol”定义为预处理器宏,用“0”替换“directives”

C4686(级别 3)

“用户定义的类型”: 行为可能有更改,UDT 中的更改返回调用约定

C4692(级别 1)

“function”: 非私有成员的签名包含程序集私有本机类型“native_type”

C4710(级别 4)

“函数”:函数未内联

C4711(级别 1)

为内联展开选定了函数“function”

C4738(级别 3)

将 32 位浮点型结果存储在内存中,可能会降低性能

C4820(级别 4)

“bytes”字节填充添加在构造“member_name”之后

C4826(级别 2)

从“type1”到“type2”的转换带有符号扩展。 这可能导致意外的运行时行为

C4836(级别 1)

使用了非标准扩展 :“type”: 局部类型或未命名类型不能用作模板参数

C4837(级别 4)

检测到三字符组:“??%c” 已由“%c”替换

C4905(级别 1)

宽字符串强制转换为“LPSTR”

C4906(级别 1)

字符串强制转换为“LPWSTR”

C4917(级别 1)

“声明符”: GUID 只能与类、接口或命名空间关联

C4928(级别 1)

副本初始化非法;隐式应用了多个用户定义的转换

C4931(级别 4)

我们假定类型库是为 number 位指针生成的

C4946(级别 1)

reinterpret_cast 在相关类之间使用:“class1”和“class2”

C4962

“函数”:原因在于优化导致了配置数据文件不一致

请参见

参考

warning