Существует ли прагма gcc/Xcode для подавления предупреждений?

StackOverflow https://stackoverflow.com/questions/1514942

  •  19-09-2019
  •  | 
  •  

Вопрос

Есть ли #pragma чтобы gcc/Xcode подавлял определенные предупреждения, аналогично Java @SuppressWarning аннотация?

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

Я не ищу ответов «исправить код».

Это было полезно?

Решение

Вот жизнеспособное решение.Использовать #pragma GCC system_header чтобы позволить GCC обрабатывать ваш код особым образом, подавляя тем самым любые нефатальные #warning.

Помните, что вы просто обманываете свой препроцессор, а не настоящий компилятор.В большинстве случаев подавление предупреждений может быть вредным.

Другие советы

В gcc4.6 и более поздних версиях вы можете использовать прагмы для подавления определенных предупреждений и выполнять это подавление только для определенного блока кода, т.е.:

#pragma GCC diagnostic 
push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 
// Code that causes warning goes here
#pragma GCC diagnostic pop

Push/pop используются для сохранения параметров диагностики, которые были доступны до обработки вашего кода.

Это был бы гораздо лучший подход, чем использование "#pragma GCC system_header", чтобы подавить все предупреждения.(Конечно, в старых версиях gcc вы можете «застрять» с #pragma GCC system_header подход!)

Вот хорошая ссылка на подавление предупреждений gcc:http://www.dbp-consulting.com/tutorials/SuppressingGCCWarnings.html

На этой странице также описано, как использовать -fdiagnostics-show-option чтобы узнать, какая опция управляет конкретным предупреждением.

Конечно, как отмечают другие, обычно гораздо предпочтительнее устранить основную причину всех предупреждений, чем подавлять их!Однако иногда это невозможно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top