Использование прагмы 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

0 ответов

Другие вопросы по тегам