Подавить предупреждение -Wunknown-pragmas в GCC

Я стараюсь игнорировать предупреждения, исходящие от некоторых сторонних файлов заголовков, например:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunknown-pragmas"
#pragma GCC diagnostic ignored "-Wreorder"

#include <some_3rd_party_header.h>

#pragma GCC diagnostic pop

Этот подход, кажется, работает в целом, но не для предупреждений неизвестной прагмы (я все еще их получаю).

Почему это работает для других предупреждений, но не для этого? Кто-нибудь может подтвердить такое поведение?

Я использую g ++ (версия 4.7.1) с -Wall и -std=c++0x под Debian.


person Robert Hegner    schedule 11.10.2012    source источник
comment
Хм, gcc уважает подавление, g ++ - нет. -Wno-unknown-pragmas вариант?   -  person Daniel Fischer    schedule 12.10.2012
comment
@DanielFischer Я думаю, вы имеете в виду параметр командной строки для компилятора? Это отключило бы предупреждение также в моем собственном коде, который мне не нужен.   -  person Robert Hegner    schedule 12.10.2012
comment
Ладно, понятно. Может быть, вы могли бы попробовать включить эти заголовки в качестве системных заголовков, как предлагается здесь?   -  person Daniel Fischer    schedule 12.10.2012
comment
Это было бы действительно хорошим решением, и это было бы моим первым выбором с самого начала. Но я работаю с Eclipse (автоматически сгенерированными файлами make), и Eclipse, похоже, не предлагает способ пометить каталог include как каталог include системы. Таким образом, он всегда использует -I, а не -isystem.   -  person Robert Hegner    schedule 12.10.2012
comment
Может быть связано с этой ошибкой: gcc.gnu.org/bugzilla/show_bug.cgi ? id = 53431   -  person sigy    schedule 22.06.2016


Ответы (1)


Я тоже столкнулся с этим раздражением. Согласно справочной странице GCC, -Wall включает -Wunknown-pragmas для вас, поэтому просто отключите его вручную, используя -Wno-unknown-pragmas после -Wall.

Существует запрос функции GCC, чтобы эта работа работала с использованием #pragma GCC diagnostic:

person Nik Reiman    schedule 01.05.2014