Извлечение «нераспознанной опции командной строки» из gcc - PullRequest
0 голосов
/ 30 сентября 2018

Я использую GCC 7.3.Если я скомпилирую, например, int main(){ } с gcc main.c -Wno-foo, компиляция завершится успешно, и я не получу сообщение об ошибке.

Изменение источника на int main(){ int a[-1]; /*uncompilable*/ } при сохранении команды сборки дает мне:

main.c: In function ‘main’:
main.c:3:6: error: size of array ‘a’ is negative
  int a[-1];
      ^
main.c: At top level:
cc1: warning: unrecognized command line option ‘-Wno-foo’

Могу ли я вызвать предупреждение unrecognized command line option ‘-Wno-foo’ / сообщение об ошибке, не внося ошибку компиляции в источник?

-Wfoo (без no-) сразу же выдает мне предупреждение, но я 'Я бы предпочел оставить там 1014 *.(Это для тестирования функций компилятора, которое я делаю как часть моей сборки.)

1 Ответ

0 голосов
/ 30 сентября 2018

Это, очевидно, функция в gcc, а не ошибка.Из руководства GCC :

Когда запрашивается нераспознанная опция предупреждения (например, «-Wunknown-warning»), GCC выдает диагностическое сообщение о том, что опция не распознана.Однако, если используется форма «-Wno-», поведение будет немного другим: диагностика для «-Wno-unknown-warning» не производится, если не производится другая диагностика.Это позволяет использовать новые опции '-Wno-' со старыми компиляторами, но если что-то идет не так, компилятор предупреждает, что присутствует нераспознанная опция.

Итак, если вам нужно знать,опция присутствует, вам нужно использовать ее без no-.Сделай это первым;если вы обнаружите, что он поддерживается, выполните любой тест, который вы собираетесь выполнить, для которого требуется аргумент -Wno-foo.

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