Как подавить ошибку -fpermissive, используя современный gcc?

Я пытаюсь скомпилировать некоторый несоответствующий код в C++17, но застрял в следующей проблеме.

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-fpermissive"

Some code that compiles only when with -fpermissive flag is set

#pragma GCC diagnostic pop

прекрасно компилируется в версиях gcc с 4.6.4 по 4.7.4, но все более поздние версии gcc выдают мне следующее предупреждение и не подавляют ошибку.

warning: ‘-fpermissive’ is not an option that controls warnings [-Wpragmas]
#pragma GCC diagnostic ignored "-fpermissive"

Когда я пишу (от отчаяния)

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpragmas"
#pragma GCC diagnostic ignored "-fpermissive"

Some code that compiles only when with -fpermissive flag is set

#pragma GCC diagnostic pop

Я вернулся на круги своя. В настоящее время я хотел бы продолжить использовать gcc 7.1 для проекта. Я могу скомпилировать весь проект с флагом -fpermissive, установленным как опция компиляции, но это означает, что может скомпилироваться какой-то другой раздел кода, вызывающий ошибку -fpermissive.

Сжатый пример https://godbolt.org/g/KFd5Ke

Этот вопрос не является дубликатом In gcc, как отключить -fpermissive предупреждение? так как это направлено на более новые версии gcc, где решение, представленное в вышеупомянутом вопросе, не работает. Я даже включил пример.

0 ответов

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