C++ 使用gcc时,在头文件中查找定义的好方法是什么?
在使用gcc时,是否有人推荐在头文件中查找定义的方法? 使用MSVC时,我只需右键单击并选择“转到定义”,这非常好 我使用了netbeans+gcc,它确实有代码帮助,包括对定义的超链接,所以这是一个选项。但是,我想知道是否还有其他具有该功能的IDE,以及不使用IDE时的最佳方式。试试。与Emacs模块C++ 使用gcc时,在头文件中查找定义的好方法是什么?,c++,windows,code-assist,C++,Windows,Code Assist,在使用gcc时,是否有人推荐在头文件中查找定义的方法? 使用MSVC时,我只需右键单击并选择“转到定义”,这非常好 我使用了netbeans+gcc,它确实有代码帮助,包括对定义的超链接,所以这是一个选项。但是,我想知道是否还有其他具有该功能的IDE,以及不使用IDE时的最佳方式。试试。与Emacs模块xscope一起,您可以告诉Emacs找到全局定义M-x cscope,它将跳转到定义符号的文件。非常方便 当然,像Eclipse、KDevelop或Code::Blocks这样的IDE也应该有这
xscope
一起,您可以告诉Emacs找到全局定义M-x cscope
,它将跳转到定义符号的文件。非常方便
当然,像Eclipse、KDevelop或Code::Blocks这样的IDE也应该有这样的功能。EclipseCDT是平台独立的,并且有这样的功能(还有更多)。它索引了项目中的所有内容(库+您自己的),所以您可以找到任何声明(或者,我应该说,任何声明)的定义。您可以将Eclipse视为具有C++功能的文本编辑器,它具有附加的功能来启动MaFe文件的NoMe.EXE或任何东西。 我使用WinSDK中的Eclipse+MS cl.exe编译器,它们一起工作就像魔咒一样。我从Eclipse运行nmake.exe,Eclipse将nmake.exe控制台很好地重定向到特殊的IDE窗口中。它还解析编译器的输出,并自动突出显示有问题的行。 唯一需要做的就是从Eclipse中为nmake.exe设置环境变量 是我最喜欢的理解C代码的工具之一,但它可能无法很好地应用于Windows世界 是一个很好的工具,用于查找几十种语言的定义。大多数合理的编程编辑器都提供了一些接口,用于调用
ctags
以获取定义信息。(vim
,例如,允许您使用^]
查找符号定义,并使用^T
弹出定义堆栈。)您可以使用ctags-R构建数据库。
并使用编辑器查找定义。(例如,vim-tfoo
将在ctags
数据库中查找foo
标记,并跳转到该文件和行。)
该软件包提供了一些类似于ctags
的实用程序,用于查找各种语言中符号的用法。在大多数编辑器中,集成不如ctags
或cscope
那么好,但编写工具可能更容易。您可以使用mkid.
构建数据库,并使用gid foo
或lid foo
或类似查找来查找符号
我发现这三个工具提供了足够多的不同功能,我经常使用这三个工具ctags
使在vim
中查找源代码变得非常快速,cscope
可以帮助查找调用者和被调用者,gid
(尤其是gid-s…
)有助于获得其他工具无法解决的复杂情况的一些提示。(无论是ctags
还是cscope
都不能很好地理解,但是gid-s
让我自己来近似解决方案。)您可以运行以生成基于HTML的源代码浏览器。这不需要使用Doxygen样式的文档对代码进行注释。它适用于多种语言,包括C++、Java和Markdown(.md
文件转到“相关页面”)
下面是一种从命令行(在Linux上测试)配置和启动Doxygen的方法
或
有一个名为的配套程序,可以让您浏览用于自定义生成的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加密的主目录有一个。要解决这个问题,您可能需要在家外面编写
html
文件夹
一个快速和肮脏的解决方案是将<代码> HTML/COD>链接到<代码> /TMP < /C> >或
## 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
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