当我重命名符号时,我通常无法手动重命名代码中的所有出现。
当GCC报告此错误时,它只会告诉“(每个未声明的符号仅报告一次)”。
我希望它报告所有出现的情况。有可能吗?
答案 0 :(得分:1)
我的第一个问题是:为什么?当我更改符号的名称时,我会这样做 使用全局搜索和替换:在我的编辑器(vim)中:
:argdo %s/\<oldname\>/newname/g
(这会将oldname
的所有实例更改为newname
,在所有文件中
编辑器参数列表,但仅当oldname
是完整的
符号;即someoldname
将不会被更改。)
如果名称是全局的,那么我将使用shell从shell执行相同的操作
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有类似的可能性,有一个 全局搜索并替换解决方案中的所有源文件。
您不编译以查找您知道的错误;一般来说 更容易解决它们。
答案 1 :(得分:0)
你可以制作一个GCC插件或MELT扩展名。
您还可以修补GCC源代码。
但我真的不认为这是值得的(这可能需要你超过一天)。您也可以尝试一些替代编译器,例如LLVM/Clang
我的感觉是你应该重新编译并更正源代码,直到你没有警告(-Wall
)或错误。它是实用的最简单,最简单的方法。
你可以配置,例如您的emacs
编辑器可以通过单键按下进行编译(例如,将键盘的F11
功能键绑定到recompile
emacs操作,例如绑定F10
功能键以跳到下一个错误,例如将其放入.emacs
:
; inside .emacs
(global-set-key [f10] 'next-error)
(global-set-key [f11] 'recompile)