Visual C ++ #pragma警告

时间:2017-01-07 11:55:00

标签: visual-c++ visual-studio-2015 pragma

我有以下三个连续警告:

Warning C4068 unknown pragma ...\microsoft visual studio 14.0\vc\include\comutil.h  53
... 54
... 54

相关的行是:

#pragma warning(push)
#pragma warning(disable: 4290)
#pragma warning(disable: 4310)

平台工具集通常是v140,目标平台版本是8.1。警告级别为W3。

我阅读了当前的#pragma警告文档。

据我所知,第一行保存了当前的警告设置状态 以下两行禁用前面代码的警告4290 4310,直到#pragma warning(pop)恢复先前保存的状态。

为什么#pragma warning显示为未知?

1 个答案:

答案 0 :(得分:0)

在我设置的项目的属性页中

C/C++ -> Preprocess to a file -> Yes (/P)

我重建了项目,该项目为每个C ++文件生成了一个带有*.i文件的Debug目录,其中包含所有展开的宏(参见here)。 这些文件非常大,但它们还包含有用的#line指令,用于显示编译器何时访问和退出头文件。所以我 grepped 以获取引发错误的头文件的名称,我能够检测到warning中的#pragma warning(push)也已被扩展,这导致未找到警告

由于我从第三方GNU项目中包含了许多标题(未定义此类#pragma),因此找到引发编译器警告的#define warning宏相对简单。