默认情况下处于关闭状态的编译器警告

编译器包含默认关闭的警告,因为大多数用户不想看到它们。 但是,你可使用下列选项之一启用此类警告。

  • #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”: 从“type of expression”到“type of expression”的不安全转换

C4242(级别 4)

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

C4254(级别 4)

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

C4255(级别 4)

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

C4263(级别 4)

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

C4264(级别 1)

“virtual_function”: 不重写基“class”中的虚拟成员函数;函数被隐藏

C4265(级别 3)

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

C4266(级别 4)

“function”: 不重写基“type”中的虚拟成员函数;函数被隐藏

C4287(级别 3)

“operator”: 无符号/负常量不匹配

C4289(级别 4)

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

C4296(级别 4)

“operator”: 表达式始终为 false

C4302(级别 2)

“conversion”: 从“type1”到“type2”截断

C4311(级别 1)

“variable”: 从“type”到“type”的指针截断

C4312(级别 1)

“operation”: 从“type1”转换到更大的“type2”

C4339(级别 4)

“type”: 在 CLR 元数据中检测到使用了未定义的类型 - 使用此类型可能导致运行时异常

C4342(级别 1)

行为更改: 调用了“function”,但在以前版本中调用的是成员运算符

C4350(级别 1)

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

C4355

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

C4365(级别 4)

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

C4370(级别 3)

为了更好地封装,类的布局与早期版本的编译器已有所不同

C4371(级别 3)

为了更好地封装成员“member”,类的布局可能与早期版本的编译器已有所不同

C4388(级别 4)

有符号/无符号不匹配

C4412(级别 2)

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

C4431(级别 4)

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

C4435(级别 4)

“class1”: /vd2 下的对象布局将因虚拟基“class2”而更改

C4437(级别 4)

从虚拟基“class1”到“class2'”的 dynamic_cast 在某些上下文中可能会失败

C4444(级别 3)

顶级“__unaligned”没有在该上下文中实现

C4471(级别 4)

无范围枚举的前向声明必须有基础类型(假定为 int)

C4472(级别 1)

“identifier”是本机枚举:添加访问说明符 (private/public) 以声明托管枚举

C4514(级别 4)

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

C4536(级别 4)

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

C4545(级别 1)

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

C4546(级别 1)

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

C4547(级别 1)

“operator”: 逗号前的运算符不起任何作用;应输入带副作用的运算符

C4548(级别 1)

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

C4549(级别 1)

“operator”: 逗号前的运算符不起任何作用;是否是有意使用“operator”的?

C4555(级别 1)

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

C4557(级别 3)

“__assume”包含效果“effect”

C4571(级别 4)

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

C4574(级别 4)

“identifier”被定义为“0”:你是否希望使用“#if identifier”?

C4608(级别 3)

“symbol1”已被初始值设定项列表中的另一个联合成员“symbol2”初始化

C4619(级别 3)

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

C4623(级别 4)

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

C4625(级别 4)

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

C4626(级别 4)

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

C4628(级别 1)

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

C4640(级别 3)

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

C4668(级别 4)

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

C4682(级别 4)

“symbol”:未指定方向参数特性,默认为 [in]

C4686(级别 3)

“user-defined type”: 行为可能有更改,UDT 中的更改返回调用约定

C4692(级别 1)

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

C4710(级别 4)

“function”: 函数未内联

C4738(级别 3)

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

C4767(级别 4)

节名称“symbol”的长度超过 8 个字符,并将由链接器截断

C4786(级别 3)

“symbol”:对象名称在调试信息中被截断为“number”个字符

C4820(级别 4)

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

C4826(级别 2)

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

C4837(级别 4)

检测到三元祖:“??%c”已替换为“%c”

C4905(级别 1)

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

C4906(级别 1)

字符串强制转换为“LPWSTR”

C4917(级别 1)

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

C4928(级别 1)

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

C4931(级别 4)

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

C4946(级别 1)

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

C4962

“function”: 已禁用按配置文件优化,原因在于优化导致了配置数据文件不一致

C4986(级别 4)

“symbol”:异常规范与前面的声明不匹配

C4987(级别 4)

使用了非标准扩展:“throw (...)”

C4988(级别 4)

“symbol”:在类/函数范围外声明了变量

请参见

参考

警告