Как подавить конкретные предупреждения в g++

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

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

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

int main()
{
  int i;
}

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

Если это не так:

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

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

Ответ 4

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

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