Не удается временно отключить предупреждение unknown-pragmas в GCC - PullRequest
2 голосов
/ 08 марта 2019

Я не могу заставить метод временно отключить предупреждения в GCC (см. Как отключить предупреждения GCC для нескольких строк кода ), по крайней мере, для предупреждения "unknown-pragmas".

Компиляция этого кода ...

#pragma comment(user,"This should depend on the command line options")

#pragma GCC diagnostic warning "-Wunknown-pragmas"
#pragma comment(user,"This should cause a warning")

#pragma GCC diagnostic error "-Wunknown-pragmas"
#pragma comment(user,"This should cause an error")

#pragma GCC diagnostic ignored "-Wunknown-pragmas"
#pragma comment(user,"This should be ignored")

... не выдает ни предупреждения / ошибки (за исключением того, что компоновщик жалуется на отсутствие main), либо при использовании -Wall или просто -Wunknown-pragmas выдает одно предупреждение для каждой из прагм комментария.

Я ожидал бы, что каждый комментарий должен был вызывать именно то, что говорится в комментарии.

Я думаю, что могу подкрепить свои ожидания документацией :

На данный момент можно контролировать только предупреждения (обычно контролируемые с помощью "-W ..."), но не все из них. Используйте -fdiagnostics-show-option, чтобы определить, какая диагностика является управляемой и какая опция управляет ими.

предупреждения, которые я получаю, показывают как

warning: ignoring #pragma comment  [-Wunknown-pragmas]

и, как говорит нам часть в скобках,

  • эта диагностика является управляемой
  • и опция -Wunknown-pragmas управляет им

Следовательно, мой код должен работать.

Так что я делаю не так?


информация о версии:

$ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609

1 Ответ

1 голос
/ 09 марта 2019

Это давно отсутствующая функция в GCC C ++:

Предупреждения, генерируемые предварительной обработкой, не могут контролироваться с помощью программ в g++. В отличие от внешнего интерфейса C, прагмы обрабатываются только после фазы предварительной обработки внешнего интерфейса C ++.

...