Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用gcc时,在头文件中查找定义的好方法是什么?_C++_Windows_Code Assist - Fatal编程技术网

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

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也应该有这

在使用gcc时,是否有人推荐在头文件中查找定义的方法? 使用MSVC时,我只需右键单击并选择“转到定义”,这非常好

我使用了netbeans+gcc,它确实有代码帮助,包括对定义的超链接,所以这是一个选项。但是,我想知道是否还有其他具有该功能的IDE,以及不使用IDE时的最佳方式。

试试。与Emacs模块
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++JavaMarkdown
.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> >或/DEV/SHM——也可能是“代码> CHMOD权限,以获得更好的数据安全性。

所有具有适当C++支持的IDES都应该提供这种能力。@ OliCharlesworth:是的,但是,如果不使用IDE,比如说windows搜索,那么什么是好方法呢?(我在windows上)。您使用什么工具编写代码?答案通常取决于您使用的编辑器。@sarnold:目前notepad++(我也使用IDE),但我仍然喜欢使用文本编辑器+make进行测试等。您可以使用Visual Studio进行编辑,然后使用gcc进行编译。我想你会发现这是非常有成效的。谢谢,CScope在Unix上似乎很受欢迎,当我看到页面上的“可能会在2000和XP上显示各种奇怪的bug”时,我认为它可能不是最好的解决方案。而且,我越想,最好的解决方案可能是“使用IDE”。。CTAG、gcc xml。。还有。谢谢你提供的信息,我发现了一件事。相关:
## 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