你能否为特定位置包含的任何标题关闭(特定)编译器警告?

mos*_*ald 15 c++ visual-studio-2008 visual-studio

我有一个第三方库,即使在/ W3下也会产生大量警告.有没有办法让我告诉编译器,"为此目录或其子目录中包含的任何文件禁用C4244"?当然,我不想在我们自己的代码库中禁用警告,也不想跟踪每个可能的包含并用它包装它#pragma warning(...

mos*_*ald 9

我不想在这里回答我自己的问题,但我担心在这种情况下"正确"的答案是:这是不可能的.


Pra*_*ian 5

我不确定您是#pragma要不要用指令包装您的include语句,还是不想花时间跟踪正确的指令。如果是后者,那么这就是我过去所做的:

#ifdef _MSC_VER
#pragma warning( disable : 4244 )
#endif

#include "MyHeader.h"

#ifdef _MSC_VER
#pragma warning( default : 4244 ) /* Reset to default state */
#endif
Run Code Online (Sandbox Code Playgroud)

  • @mos:为什么要搜索?编译器会提醒您错过了一个。 (2认同)

cpx*_*cpx 5

您可以放置​​标志,例如/wd4600,VS Project Settings > Command-line Options告诉编译器抑制特定的编译器警告

  • 这错过了他所说的部分,"我不想在我们自己的代码库中禁用警告." (10认同)