/w、/W0、/W1、/W2、/W3、/W4、/w1、/w2、/w3、/w4、/Wall、/wd、/we、/wo、/Wv、/WX(警告级别)

指定编译器如何为给定编译生成警告。

语法

/w
/W0
/W1
/W2
/W3
/W4
/Wall
/Wv[:version]
/WX
/w1warning
/w2warning
/w3warning
/w4warning
/wdwarning
/wewarning
/wowarning

注解

警告选项指定要显示的编译器警告以及整个编译的警告行为。

下表描述了警告选项和相关参数:

选项 说明
/w 禁用所有编译器警告。
/W0

/W1

/W2

/W3

/W4
指定编译器生成的警告的最高等级。 有效的警告级别范围为 0 到 4:
/W0 禁止显示所有警告。 它等效于 /w。
/W1 显示 1 级(严重)警告。 /W1 是命令行编译器中的默认设置。
/W2 显示 1 级和 2 级(严重)警告。
/W3 显示级别 1、级别 2 和级别 3(生产质量)警告。 /W3 是 IDE 中的默认设置。
/W4 显示 1 级、2 级和 3 级警告,以及默认情况下未关闭的所有 4 级(信息性)警告。 建议您使用此选项来提供链接形式的警告。 对于新项目,最好在所有编译中使用 /W4。 此选项有助于确保尽可能减少难以发现的代码缺陷。
/Wall 显示 /W4 显示的所有警告以及 /W4 不包括的所有其他警告 - 例如,默认情况下关闭的警告。 有关详细信息,请参阅默认关闭的编译器警告
/Wv[:version] 仅显示版本编译器版本和更早版本中引入的警告。 你迁移到较新版本的编译器时,可以使用此选项来禁止代码中的新警告。 这使你可以在修复现有构建过程时维护它们。 可选参数 version 采用 nn[.mm[.bbbbb]] 形式,其中 nn 是主版本号,mm 是可选的次要版本号,bbbbb 是编译器的可选内部版本号。 例如,使用 /Wv:17 仅显示 Visual Studio 2012(主要版本 17)或更早版本中引入的警告。 也就是说,它显示任何版本编译器的警告,其主版本号为 17 或更低。 这禁止在 Visual Studio 2013(主要版本 18)及更高版本中引入的警告。 默认情况下,/Wv 使用当前编译器版本号,并且不会禁止任何警告。 有关编译器版本禁止哪些警告的信息,请参阅编译器警告(按编译器版本)
/WX 将所有编译器警告视为错误。 对于新项目,最好在所有编译中使用 /WX;对所有警告进行解析可确保将可能难以发现的代码缺陷减至最少。

链接器还有一个 /WX 选项。 有关详细信息,请参阅 /WX(将链接器警告视为错误)

以下选项彼此互斥。 从此组指定的最后一个选项是应用了以下选项:

选项 说明
/w1nnnn

/w2nnnn

/w3nnnn

/w4nnnn
设置 nnnn 指定的警告编号的警告级别。 这些选项允许你在设置特定警告级别时更改该警告的编译器行为。 你可以将这些选项与其他警告选项结合使用,以强制执行你自己的警告编码标准,而不是 Visual Studio 提供的默认标准。

例如,/w34326 导致 C4326 生成为 3 级警告而不是 1 级警告。 如果同时使用 /w34326 选项和 /W2 选项进行编译,则不会生成警告 C4326。
/wdnnnn 禁止由 nnnn 指定的编译器警告。

例如,/wd4326 将禁止编译器警告 C4326。
/wennnn 将 nnnn 指定的编译器警告视为错误。

例如,/we4326 导致警告编号 C4326 被编译器视为错误。
/wonnnn 只报告一次由 nnnn 指定的编译器警告。

例如,/wo4326 导致警告 C4326 只报告一次,这是编译器第一次遇到它。

如果你在创建预编译头文件时使用任何警告选项,它会保留这些设置。 使用预编译的标头会使这些相同的警告选项再次生效。 要覆盖预编译的标头警告选项,请在命令行上设置另一个警告选项。

可以使用 #pragma warning 指令来控制在编译时特定源文件中报告的警告级别。

源代码中的警告编译指示指令不受 /w 选项的影响。

生成错误文档描述警告和警告等级,并指明为何某些语句可能无法按预定方式编译。

在 Visual Studio 开发环境中设置编译器选项

  1. 打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性

  2. 要设置 /W0、/W1、/W2、/W3、/W4、/Wall、/Wv、/WX 或 /WX- 选项,请选择“配置属性”>“C/C++”>“常规”。

    • 若要设置 /W0、/W1、/W2、/W3、/W4 或 /Wall 选项,请修改“警告级别”属性。

    • 要设置 /WX 或 /WX- 选项,请修改“将警告视为错误”属性。

    • 要设置 /Wv 选项的版本,请在“警告版本”属性中输入编译器版本号。

  3. 要设置 /wd 或 /we 选项,请选择“配置属性”>“C/C++”>“高级”属性页。

    • 要设置 /wd 选项,请选择“禁用特定警告”属性下拉控件,然后选择“编辑”。 在“禁用特定警告”对话框的编辑框中,输入警告编号。 若要输入多个警告,请使用分号 (;) 分隔值。 例如,若要禁用 C4001 和 C4010,请输入 4001;4010。 选择“确定”以保存更改并返回到“属性页”对话框。

    • 要设置 /we 选项,请选择“将特定警告视为错误”属性下拉控件,然后选择“编辑”。 在“将特定警告视为错误”对话框的编辑框中,输入警告编号。 若要输入多个警告,请使用分号 (;) 分隔值。 例如,若要将 C4001 和 C4010 视为错误,请输入 4001;4010。 选择“确定”以保存更改并返回到“属性页”对话框。

  4. 要设置 /wo 选项,请选择“配置属性”>“C/C++”>“命令行”属性页。 在“附加选项”框中输入编译器选项。

  5. 选择“确定”以保存更改 。

以编程方式设置 编译器选项

另请参阅

MSVC 编译器选项
MSVC 编译器命令行语法