Отключить предупреждение gcc для несовместимых опций - PullRequest
5 голосов
/ 05 июня 2009

Мне любопытно, есть ли возможность отключить предупреждения gcc о недопустимом параметре для компилируемого языка.

Ex:

cc1: warning: command line option "-Wno-deprecated" is valid for C++/Java/ObjC++ but not for C

Наша система сборки передает предупреждения, которые мы определили глобально, через сборку. У нас есть и код C / C ++, и предупреждения становятся очень раздражающими при попытке найти реальные предупреждения.

Есть предложения?

Ответы [ 5 ]

3 голосов
/ 05 июня 2009

Чтобы включить определенные предупреждения в gcc -Wxxxx и отключить их с помощью -Wno-xxxx .

Из Параметры предупреждения GCC :

Вы можете запросить много конкретных предупреждений с опциями, начинающимися -W', for example -Wimplicit to request warnings on implicit declarations. Each of these specific warning options also has a negative form beginning -Wno- ', чтобы отключить предупреждения; например, -не-неявный. В этом руководстве указана только одна из двух форм, в зависимости от того, какая из них не используется по умолчанию.

Однако @Neil прав насчет разделения опций для разных языков. Если вы используете make, вы можете, например, поместите все опции C в CFLAGS и все опции C ++ в CCFLAGS.

2 голосов
/ 05 июня 2009

Если вы установите переменную CFLAGS, она будет влиять только на файлы C, если вы установите переменную CXXFLAGS, она будет влиять только на файлы C ++, так что вы можете легко отделить логику.

2 голосов
/ 05 июня 2009

Мне кажется, что если бы была такая опция, была бы еще одна опция, чтобы отключить предупреждения об этой опции и так далее до бесконечности. Так что я подозреваю, что нет.

Наличие одинаковых опций для сборок совершенно разных языков в любом случае кажется немного странным - я бы имел разные опции, определенные как макросы make-файла и используемые соответствующим образом для разных целей.

0 голосов
/ 05 июня 2009

Если вариант компиляции ваших файлов C как C ++, -x c++.

0 голосов
/ 05 июня 2009

Увы, у gcc нет возможности включать или выключать отдельные предупреждения. Некоторые предупреждения имеют специальный регистр, и уровни предупреждений могут быть установлены, но нет способа отключить предупреждения, которые вас не волнуют.

Я имею в виду, кого бы беспокоило пропустить пустую строку в конце файла? Я знаю, что есть патч для его отключения, но сборка моего компилятора из исходного кода - это слишком много.

Для вашей системы сборки вы можете определить отдельные наборы предупреждений для разных языков. Что произойдет, если вам понадобится другой компилятор, а не gcc?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...