2011-10-31 88 views
4

Visual C++功能#pragma warning其中包括允许更改特定警告的警告级别。说默认警告X有4级,然后在为什么要在C++中更改特定警告的警告级别?

#pragma warning(3, X) 

从这一点开始它将具有等级3。

我明白为什么我会暂时禁用警告,把警告变成了错误或打开一个华林,默认情况下是关闭的。但是,为什么我要更改警告级别?

我的意思是警告级别的特定警告与编译器“警告级别”选项/W一起工作,所以我目前无法想象一个设置,在该设置中,我想更改个别警告的级别,因为警告正在发射与否取决于项目设置。

是什么,当我真的需要改变C++中的特定警告的警告级别现实生活中的例子?

回答

4

当你想在3级或4上运行,但要看到/没有看到具体的信息,你可以改变它的水平。当然,如果警告水平不是你想象的,那么编译指示可能没有效果,但这是编译指示的生活。

-2

我的经验是处理警告和错误,努力生成没有警告的代码。我知道这可能看起来像一个愚蠢或过于严格的方法,但从长远来看,它确实确实带来了回报。相信我!

+1

这是如何解释需要改变警告的级别? –

+1

这根本不回答问题。 –

+0

它回答最后一段,带有问号的那一段。 – e8johan

4

这是很容易采取的一个或两个级别您要检测4警告和使用编译把他们分为3个级别比它是使用/W4和禁用(/Wd####)的所有警告你不在乎关于。

1

在某些情况下,当你与遗留代码,并且由于较新的编译器工作成为可能要调低警戒线这些模块以避免成千上万的警告更加敏感。另外在某些情况下,当您与生成的代码进行交互时,您希望关闭警告级别。例如ANTLR生成的C代码视为黑盒子,因此您不需要警告。

1

的,我用这个是错误C4996,我从一个3级警告级别4例如移动它的一个例子,在VS编译器警告的sprintf 可能是不安全的,建议您使用非可移植的sprintf_s函数。你可以得到很多这些警告,而不是通过所有这些发现真正的错误,我宁愿阻止它们被发布。

我知道我可以定义一个用于sprintf(和其他函数的加载)的宏,它将保持可移植性,严格地说应该这样做,但在大型项目中,追踪并修复所有这些警告是一些努力,可能很少有回报。