我有以下三个连续警告:
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
显示为未知?
答案 0 :(得分:0)
在我设置的项目的属性页中
C/C++ -> Preprocess to a file -> Yes (/P)
我重建了项目,该项目为每个C ++文件生成了一个带有*.i
文件的Debug目录,其中包含所有展开的宏(参见here)。
这些文件非常大,但它们还包含有用的#line
指令,用于显示编译器何时访问和退出头文件。所以我 grepped 以获取引发错误的头文件的名称,我能够检测到warning
中的#pragma warning(push)
也已被扩展,这导致未找到警告
由于我从第三方GNU项目中包含了许多标题(未定义此类#pragma
),因此找到引发编译器警告的#define warning
宏相对简单。