找到变量定义的任何程序或技巧?

时间:2009-02-17 23:54:28

标签: c++ variables find definition

很多时候,当我在观察其他代码时,我只想找到变量定义的位置和方式。通常我现在要做的是查找变量的类型,直到找到定义,这非常耗时。而且我想有一些工具可以帮助我解决这种局面。某些工具或命令中有任何建议可以帮助我完成这项任务吗?

我知道使用GUI并创建一个项目这是自动完成的我在谈论一种没有GUI的方法。我只使用文本模式。我在Linux下运行,我正在使用C / C ++,但欢迎使用其他语言的建议。

非常感谢。

可能的解决方案

Michel在他的一篇评论中提出了一个简单有效的解决方案,再次定义变量,在这种情况下,在编译时,编译器会告知先前的定义在哪里。当然,要应用此解决方案,我们需要先考虑变量的位置。

8 个答案:

答案 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)

我使用以下三种方法之一:

  1. 我将使用CTags来处理我的源代码树(每晚),然后可以轻松地使用Vim(或其他编辑器)中的命令直接跳转到定义。
  2. 我将使用grep(linux)或findstr(windows)来查找所有出现的变量名称或类型。定义通常很明显。
  3. 在Vim中,您只需在范围内向后搜索,并经常找到您要查找的内容。

答案 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连接启动构建。