Как заставить GCC сообщать о каждом появлении необъявленного символа? - PullRequest
3 голосов
/ 03 февраля 2012

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

Когда GCC сообщает об ошибке об этом, он только говорит "(каждый необъявленный символ сообщается только один раз)".

Я хочу, чтобы он сообщал обо всех происшествиях. Возможно ли это?

Ответы [ 2 ]

1 голос
/ 03 февраля 2012

Мой первый вопрос: почему?Когда я изменяю имя символа, я делаю это с помощью глобального поиска и заменяю: в моем редакторе (vim):

:argdo %s/\<oldname\>/newname/g

(Это изменяет все экземпляры oldname на newname во всехфайлы в списке аргументов редакторов, но только если oldname является полным символом, т. е. someoldname не изменится.)

Если имя является глобальным, то я сделаю то же самое изоболочка, использующая sed:

for f in $(find root -name '*.hh' -o -name '*.cc')
do
    sed 's/\<oldname\>/newname/g' $f > tmp && mv tmp $x
done

Если вы работаете под Windows, я считаю, что VS имеет аналогичные возможности с глобальным поиском и заменой всех исходных файлов в решении.

Вы не компилируете, чтобы найти ошибки, о которых вы знаете;как правило, сначала проще их исправить.

0 голосов
/ 03 февраля 2012

Вы можете сделать плагин GCC или расширение MELT , чтобы сделать это.

Вы также можете исправить исходный код GCC.

Но я действительно недумаю, что это стоит усилий (это, вероятно, займет у вас больше, чем один день).Вы также можете попробовать другой альтернативный компилятор, например LLVM / Clang .

Мне кажется, что вам просто нужно перекомпилировать и исправить свой исходный код, пока вы не получите никаких предупреждений (с -Wall) илиошибки.Это прагматически самый простой и легкий подход.


практический совет с Emacs

Вы можете настроить, например, свой редактор emacs для компиляции одним нажатием клавиши (например, bind F11функциональная клавиша вашей клавиатуры для действия recompile emacs и, например, связывание функциональной клавиши F10 для перехода к следующей ошибке, например, введите ее в .emacs:

 ; inside .emacs
 (global-set-key [f10] 'next-error)
 (global-set-key [f11] 'recompile)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...