Как подавить конкретные предупреждения в 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