很多时候,当我在观察其他代码时,我只想找到变量定义的位置和方式。通常我现在要做的是查找变量的类型,直到找到定义,这非常耗时。而且我想有一些工具可以帮助我解决这种局面。某些工具或命令中有任何建议可以帮助我完成这项任务吗?
我知道使用GUI并创建一个项目这是自动完成的我在谈论一种没有GUI的方法。我只使用文本模式。我在Linux下运行,我正在使用C / C ++,但欢迎使用其他语言的建议。
非常感谢。
可能的解决方案
Michel在他的一篇评论中提出了一个简单有效的解决方案,再次定义变量,在这种情况下,在编译时,编译器会告知先前的定义在哪里。当然,要应用此解决方案,我们需要先考虑变量的位置。答案 0 :(得分:11)
您已经提供了最合适的工具:IDE。这完全是IDE擅长的东西。如果您在没有IDE的情况下发现开发很痛苦,为什么不想要使用IDE?
请注意,Emacs,Vim等可以作为IDE使用 - 如果您想要保持纯文本状态,例如,我不是在强迫您使用GUI世界。因为你正在进行SSH连接。
(我真的不试图在这里变得粗鲁。我只是认为你已经打消了明显的解决方案而没有解释原因。)
答案 1 :(得分:8)
编辑:好的,你说你正在使用C ++。我正在编辑我的回复。我会使用C预处理器然后grep为变量。它将出现在第一位。
cpp -I...(preprocessor options here) file.cpp | grep variable
C预处理器将加入程序使用的所有包含,并且定义必须在文件中对该变量的任何使用之前。这不是一件完美的事情,但如果没有IDE或完整的语言描述/管理工具,您只能拥有文本。
另一种选择是使用ctags。它理解C和C ++语法(以及其他语法),并且可以使用命令行工具,emacs和vi等搜索变量和函数。
答案 2 :(得分:5)
我虔诚地使用cscope和ctags-exuberant。在我的代码库上运行一次,然后在Vim中,我可以使用各种命令,如^]或[D或[I或类似的查找给定单词的任何定义或声明。
这类似于Visual Studio和Eclipse等超级IDE提供的功能。
Cscope还可以作为执行这些搜索的独立工具。
答案 3 :(得分:2)
我使用以下三种方法之一:
答案 4 :(得分:1)
Grep用于变量声明的常见模式。示例:*,&,>或一个字母数字,后跟一个或多个空白字符,然后是变量的名称。或者变量名后跟零个或多个空格字符,然后是左括号或分号。除非它是在非常奇怪的情况下定义的(比如某种宏),它每次都有效。
答案 5 :(得分:1)
在VIM中,您可以使用gd
查看局部变量声明,或gD
查看全局变量声明(如果它们已在当前文件中定义)。参考Go_to_definition_using_g
您也可以使用[i
查看定义而不跳转到它,或[I
查看所有包含的文件中所有出现的变量,这自然也会显示定义
答案 6 :(得分:-1)
如果您使用的是Microsoft Visual Studio(我认为您也可以使用C ++,但需要在Windows工作站上工作),可以使用“Go to Definition ...”轻松访问右键菜单选项,这将带您到任何当前标记的变量,类型或方法的定义。
答案 7 :(得分:-1)
如果您坚持保持文本模式,可以使用emacs或vi使用相应的插件执行此操作。
但实际上,进入21世纪。
编辑:您评论说您是通过SSH执行此操作,因为您需要远程服务器群集的构建速度。
在这种情况下,将驱动器安装在本地计算机上并使用IDE,然后通过SSH连接启动构建。