使用gcc时,在头文件中查找定义的好方法是什么?

有没有人有推荐的方式来find在头文件中使用gcc的定义? 当使用MSVC时,我可以右键单击并select“转到定义”,这非常好。

我已经使用netbeans + gcc,它有代码帮助,包括超链接到定义,所以这是一个选项。 不过,我想知道是否有任何其他IDE具有该function,也是不使用IDE的最佳方式。

Solutions Collecting From Web of "使用gcc时,在头文件中查找定义的好方法是什么?"

您可以运行Doxygen来生成一个基于HTML的源浏览器。 这并不要求用Doxygen风格的文档来注释代码。

这是从命令行(在Linux上测试)配置和启动Doxygen的方法…

echo -e "SOURCE_BROWSER=YES\n EXTRACT_ALL=YES\n RECURSIVE=YES\n SEPARATE_MEMBER_PAGES=YES\n" |doxygen - firefox html/index.html 

有一个名为doxywizard的配套程序,它允许您浏览可用于自定义生成的HTML的许多配置选项。 或者,您可以运行doxygen -g来创建一个初始配置文件(其中包含详细的提示)。

我推荐以下非默认选项来生成源浏览器:

 SOURCE_BROWSER=YES ## display source code EXTRACT_ALL=YES ## display all items (not just "documented" ones) RECURSIVE=YES ## include source found in subdirectories SEPARATE_MEMBER_PAGES=YES ## optional -- each class member has its own page 

一旦你有了主页面,你就可以浏览到感兴趣的信息源(或使用搜索功能)。 源代码与相关声明的可点击链接进行交叉引用。

试试CScope 。 与Emacs模块xscope一起,您可以将Emacs告知Mx cscope-find-global-definition ,它将跳转到定义符号的文件。 非常方便。

当然,像Eclipse或KDevelop或Code :: Blocks这样的IDE也应该有这样的功能。

Eclipse CDT是独立于平台的,并且具有这样的功能(加上更多)。 它的索引包括你的项目(库+你自己的),所以你可以找到任何声明(或者,我应该说,任何声明)的定义。 您可以将Eclipse视为花哨的面向C ++的文本编辑器,并具有使用makefile启动make(nmake.exe或其他)的附加功能。 我使用WinSDK的Eclipse + MS cl.exe编译器 – 它们像charms一起工作。 我从Eclipse运行nmake.exe,Eclipse将nmake.exe控制台很好地重定向到特殊的IDE窗口。 它还解析编译器的输出并自动突出显示违规行。 唯一需要做的是在Eclipse中为nmake.exe设置环境变量。

cscope是我最喜欢的用于理解C代码的工具之一,但它可能无法很好地转换到Windows世界。

繁琐的ctags是用数十种语言查找定义的绝佳工具。 大多数合理的编程编辑器提供一些接口来调用ctags来定义信息。 (举例来说, vim允许你使用^]来查找一个符号的定义, ^T弹出备份定义堆栈。)你使用ctags -R .构建一个数据库ctags -R . 并使用您的编辑器查找定义。 (例如, vim -t foo将在ctags数据库中查找foo标签并跳转到该文件和行。)

GNU idutils包提供了一些类似于ctags好用工具,用于查找各种语言中符号的用法。 在大多数编辑器中,集成并不像ctagscscope那么好,但是编写工具可能更容易。 你用mkid .建立数据库mkid .gid foolid foo或类似的查找来查找符号。

我发现这三个工具提供了不同的功能,我常用这三种功能。 ctagsvim通过源代码打猎非常快, cscope可以帮助找到调用者和被调用者,而gid (尤其是gid -s ... )只是在复杂的情况下得到一些提示,而其他工具不仅仅解决了这个问题。 ( ctagscscope不能理解粘贴好的令牌 ,但gid -s让我自己逼近一个解决方案。)