使用pragma push in precompiled header with Clang without pop

jva*_*wyk 5 c++ clang precompiled-headers

在我的代码库中,我有一个include文件(MyBaseDefinitions.h)执行a pragma diagnostic push后跟禁用很多警告.如果要重新启用这些警告,则只需在其后添加另一个标头,即pragma诊断pop(EndMyBaseDefinitions.h).

这似乎工作得很好,除了在Clang放入MyBaseDefinitions.h预编译的头文件时.看来诊断"堆栈"在预编译头中丢失了.所以,让我说我有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

// ... 
Run Code Online (Sandbox Code Playgroud)

我会收到警告:

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

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

--Joel