Использование прагмы push в предварительно скомпилированном заголовке с Clang без pop
В моей кодовой базе у меня есть включаемый файл (MyBaseDefinitions.h
) что делает pragma diagnostic push
с последующим отключением много предупреждений. Если вы хотите снова включить эти предупреждения, вы просто включаете другой заголовок, который выполняет прагматическую диагностику (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
// ...
Я получу предупреждение:
error : pragma diagnostic pop could not pop, no matching push [-Werror,-Wunknown-pragmas]
Это известная проблема? Очевидно, что в идеале мне не нужно было бы вообще отключать какие-либо предупреждения, но давайте попытаемся пока игнорировать эту деталь, если это возможно.
--Joel