Как подавить конкретные предупреждения в g ++ - PullRequest
30 голосов
/ 28 января 2009

Я хочу отключить конкретные предупреждения от g ++. Мне известен флаг -Wno-XXX, но я ищу что-то более конкретное. Я хочу несколько предупреждений в -Weffc++, но не всех из них. Что-то вроде того, что вы можете сделать с lint - отключить определенные сообщения.

Есть ли в gcc встроенный способ сделать это? Должен ли я написать скрипт-обертку?

Ответы [ 4 ]

20 голосов
/ 28 января 2009

К сожалению, эта функция не предоставляется g ++. В VC ++ вы можете использовать # pragma warning , чтобы отключить некоторые конкретные предупреждения. В gcc самое близкое, что вы можете иметь, это диагностические прагмы , которые позволяют включать / отключать определенные типы диагностики для определенных файлов или проектов.

11 голосов
/ 28 января 2009

Для некоторых предупреждений есть переключатель командной строки, чтобы отключить их. Чтобы узнать, какой ключ использовать, передайте -fdiagnostics-show-option в gcc.

2 голосов
/ 10 марта 2013

стандартная ошибка конвейера для фильтра, который удаляет вещи, которые вы не хотите видеть. Например, это мой make-файл:

main.o: main.cpp g ++ -c -Wall main.cpp 2> & 1 | grep -v Wunused-variable

2 голосов
/ 28 января 2009

Вы можете просто использовать grep -v на выходе.

В зависимости от предупреждения, которое вы хотите отключить, вы можете иногда исправить в коде. E.g.:

int main()
{
  int i;
}

Генерирует: foo.cc:4: предупреждение: неиспользуемая переменная 'i'

Принимая во внимание, что это не так:

#define MARKUSED(X)  ((void)(&(X)))

int main()
{
  int i;
  MARKUSED(i);
}
...