使用 gcc 时,有没有人推荐在头文件中查找定义的方法?使用 MSVC 时,我只需右键单击并选择“转到定义”,这非常好。
我使用过 netbeans + gcc,它确实有代码帮助,包括到定义的超链接,所以这是一种选择。但是,我想知道是否还有其他具有该功能的 IDE,以及不使用 IDE 时的最佳方法。
使用 gcc 时,有没有人推荐在头文件中查找定义的方法?使用 MSVC 时,我只需右键单击并选择“转到定义”,这非常好。
我使用过 netbeans + gcc,它确实有代码帮助,包括到定义的超链接,所以这是一种选择。但是,我想知道是否还有其他具有该功能的 IDE,以及不使用 IDE 时的最佳方法。
您可以运行Doxygen来生成基于 HTML 的源代码浏览器。这不需要使用 Doxygen 样式的文档对代码进行注释。它适用于多种语言,包括C++、Java和Markdown(.md
文件转到“相关页面”)。
这是一种从命令行配置和启动 Doxygen 的方法(在 Linux 上测试)...
## basic
echo -e "SOURCE_BROWSER=YES\n EXTRACT_ALL=YES\n RECURSIVE=YES\n" |doxygen -
xdg-open html/index.html
或者
## include diagrams and non-public content -- and launch browser immediately
echo -e "HAVE_DOT=YES\n CALL_GRAPH=YES\n CALLER_GRAPH=YES\n SOURCE_BROWSER=YES\n EXTRACT_ALL=YES\n EXTRACT_PRIVATE=YES\n EXTRACT_STATIC=YES\n RECURSIVE=YES\n SEPARATE_MEMBER_PAGES=YES\n GENERATE_LATEX=NO\n EXCLUDE_SYMLINKS=YES" |doxygen - && chromium-browser --new-window 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
启动主网页后,您可以浏览到感兴趣的来源(或使用搜索功能)。来源与相关声明的可点击链接交叉引用。
我遇到过几次这个问题:doxygen 可以创建非常长的文件名,Linux 加密的主目录限制为 143 个字符。要解决此问题,您可能必须html
在家外编写文件夹。
一个快速而肮脏的解决方案是链接html
到一个文件夹/tmp
或/dev/shm
- 也可能chmod
是为了更好的数据安全性。
尝试CScope。与 Emacs 模块一起,xscope
您可以告诉 Emacs to M-x cscope-find-global-definition
,这将跳转到定义符号的文件。非常方便。
当然,诸如 Eclipse 或 KDevelop 或 Code::Blocks 之类的 IDE 也应该具有这样的功能。
Eclipse CDT 是独立于平台的并且具有这样的特性(还有更多)。它索引您在项目中拥有的所有内容(库+您自己的),因此您可以找到任何声明的定义(或者,我应该说,任何声明)。您可以将 Eclipse 视为花哨的面向 C++ 的文本编辑器,具有使用您的 makefile 启动 make(nmake.exe 或其他)的附加功能。我使用来自 WinSDK 的 Eclipse + MS cl.exe 编译器——它们一起工作就像魅力一样。我从 Eclipse 运行 nmake.exe,Eclipse 将 nmake.exe 控制台很好地重定向到特殊的 IDE 窗口。它还解析编译器的输出并自动突出显示有问题的行。唯一需要做的就是在 Eclipse 中为 nmake.exe 设置环境变量。
cscope
是我最喜欢的用于理解 C 代码的工具之一,但它可能无法很好地转化为 Windows 世界。
exuberantctags
是查找数十种语言定义的绝佳工具。大多数合理的编程编辑器都提供了一些接口来调用ctags
定义信息。(vim
例如,允许您使用^]
来查找符号的定义并^T
弹出定义堆栈。)您可以ctags -R .
使用编辑器构建数据库并查找定义。(例如,vim -t foo
将在数据库中查找foo
标记ctags
并跳转到该文件和行。)
GNUidutils
包提供了一些很好的实用程序,类似于ctags
查找各种语言中符号的使用。集成在大多数编辑器中不如ctags
或cscope
但它可能更容易编写工具。您可以使用或类似查找来构建数据库并查找符号。mkid .
gid foo
lid foo
我发现这三个工具提供了足够不同的功能,我经常使用这三个工具。可以非常快速ctags
地搜索源代码,可以帮助找到调用者和被调用者,并且(尤其是)对于获取其他工具无法解决的复杂情况的一些提示很有用。(也不太了解令牌粘贴,但让我自己近似一个解决方案。)vim
cscope
gid
gid -s ...
ctags
cscope
gid -s