warning
启用编译器警告消息行为的选择性修改。
#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list...] )
#pragma warning( push[ ,n ] )
#pragma warning( pop )
备注
下面的警告说明符参数可用。
警告说明符 |
含义 |
---|---|
1, 2, 3, 4 |
将给定级别于指定的警告。 这也打开默认情况下关闭的指定警告。 |
default |
重置警告行为为其默认值。 这也打开默认情况下关闭的指定警告。 警告将会在其默认值,文档,级。 有关更多信息,请参见默认情况下关闭的编译器警告。 |
disable |
不要问题指定的警告消息。 |
error |
报告指定的警告视为错误。 |
once |
显示指定的消息仅一次。 |
suppress |
驱动器说明的当前状态在堆栈中,禁用下一行的指定的警告,然后弹出警告堆栈,以便重置注意状态。 |
下面的代码语句声明 warning-number-list 参数可以包含多个警告编号,因此,多个 warning-specifier 参数在同一个杂注指令中指定。
#pragma warning( disable : 4507 34; once : 4385; error : 164 )
这是功能上等效于以下代码。
// Disable warning messages 4507 and 4034.
#pragma warning( disable : 4507 34 )
// Issue warning 4385 only once.
#pragma warning( once : 4385 )
// Report warning 4164 as an error.
#pragma warning( error : 164 )
编译器将 4000 添加到在 0 和 999 之间的任何警告编号。
对于在范围 4700-4999 的警告编号,是一个方确实与代码生成,该警告的状态,当编译器遇到函数的左大括号实际上将对该函数的其余部分时。 使用在更改具有的数字警告的状态的函数的 warning 说明大于 4699 在函数的末尾才会生效。 下面的示例演示 warning 批注的正确位置禁用代码生成警告消息,然后将其还原。
// pragma_warning.cpp
// compile with: /W1
#pragma warning(disable:4700)
void Test() {
int x;
int y = x; // no C4700 here
#pragma warning(default:4700) // C4700 enabled after Test ends
}
int main() {
int x;
int y = x; // C4700
}
在函数体中,最后一个设置 warning 说明实际上是为整个对象的功能。
推送和方式安排
warning 批注还支持以下语法。
#pragma warning( push [ ,n ] )
#pragma warning( pop )
其中 n 表示一个警告等级 (1 到 4)。
说明 warning( push )存储每个警告的当前警告状态。 说明 warning( push,n)存储每个警告的当前状态和设置全局警告等级为 n。
说明 warning( pop )弹出最后一个警告状态推入堆栈。 对 push 和 pop 之间的警告状态的任何更改都将取消。 请看以下示例:
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )
此代码结束时, pop 还原每个警告状态 (包括 4705, 4706 和 4707) 到什么是在代码的开头。
当您编写头文件,可以使用 push 和 pop 确保用户所做的警告状态更改不会阻止头正确生成。 在标头中开始使用 push 和 pop 在末尾。 例如,因此,如果您具有完全不在生成警告等级 4 的头,下面的代码将更改该警告等级为 3 然后恢复原始警告等级在标头中的末尾。
#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )
有关帮助您禁止显示警告的编译器选项的更多信息,请参见 /FI 和 /w。