使用pragma push in precompiled header with Clang without pop

时间:2017-07-24 20:58:00

标签: c++ clang precompiled-headers

在我的代码库中,我有一个包含文件(MyBaseDefinitions.h)来执行pragma diagnostic push,然后禁用大量警告。如果要重新启用这些警告,则只需在其后添加另一个标题,即执行pragma diagnostic pop(EndMyBaseDefinitions.h)。

除了将MyBaseDefinitions.h放入预编译头文件中的Clang之外,这似乎工作正常。看来诊断“堆栈”在预编译头中丢失了。所以,假设我有MyPrecompiledHeader.h,它有:

#include "MyBaseDefinitions.h" // does the pragma diagnostic push

然后在我的演示文件中我做了:

#include "MyPrecompiledHeader.h"

#include "HeaderExample1.h" // This file has some warnings in it that we don't care about
#include "EndMyBaseDefinitions.h" // Re-enable warnings

// ... 

我会收到警告:

error : pragma diagnostic pop could not pop, no matching push [-Werror,-Wunknown-pragmas]

这是一个已知问题吗?显然,理想情况下我根本不需要做任何禁用警告,但如果可能的话,让我们暂时忽略这个细节。

- 乔尔

0 个答案:

没有答案