Как отключить предупреждение GCC о том, что директива # warning является расширением GCC?


При использовании директивы #warning вместо одного предупреждения я получаю два-то, которое я генерирую, плюс дополнительное warning: #warning is a GCC extension [enabled by default].

Я могу подавить сам результат директивы #warning с помощью -Wno-cpp, но это противоположно тому, что я хочу.

Я могу обойти это, вместо этого используя #pragma message(), но это, кажется, делает директиву #warning довольно бессмысленной - нет ли способа подавить это предупреждение?

3 8

3 ответа:

Ах, похоже, что опция -pedantic включает это предупреждение, и, похоже, для него нет специального переопределения, как и для большинства других предупреждений GCC. Удаление -pedantic избавляет от предупреждения о предупреждении.

#ifdef __GNUC__
#warning "no warning here!"
#endif

Будет компилироваться с gcc или без него, даже с -pedantic, но он все равно выдаст предупреждение (и потерпит неудачу, если предупреждения будут перерастать в ошибки).

Обновление: Согласно этому связанному вопросу , нет никакого чистого решения для выборочного отключения предупреждений о специфичной для gnu #pragma s

На самом деле, должно работать следующее. С помощью этого вы можете подавлять/игнорировать предупреждения gcc.

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

...

#pragma GCC diagnostic pop