【问题标题】:Finding a function definition using a call in C++使用 C++ 中的调用查找函数定义
【发布时间】:2011-01-19 06:50:06
【问题描述】:

我正在尝试了解一个相当大的 C++ 项目的源代码。源代码不是用 IDE 编写的,所以我没有“转到”按钮来直接进入函数定义。

例如:

srand();

我想知道函数 srand() 的确切定义位置。

我能想到的唯一方法是手动检查所有包含的标头以递归查找声明和定义的相应文件。

这是一个linux环境,源码用g++编译(使用cmake)。

【问题讨论】:

  • 最简单的事情可能是在现代 IDE 中编译,如果只是为了获取浏览信息。
  • srand 而言,请参见:linux.die.net/man/3/srand
  • 我回应上面的@John,仅仅因为它是用 vi 编写的,并不意味着你不能在 IDE 中查看/编辑——像 Netbeans 这样的东西会足够聪明,可以拾取现有的 makefile 等。如果你在其中打开你的项目。然后它会索引,你可以做任何你想做的事情......

标签: c++ compiler-construction linker


【解决方案1】:

查看ctags 程序。

ctags 生成一个文件,其中包含代码中使用每个标识符的位置的信息。然后可以为您选择的编辑器使用一个插件,该插件允许您跳转到任何标识符的定义。 (非常成熟的ctags 插件适用于 Vim 和 Emacs,可能也适用于大多数其他流行的编辑器。)

【讨论】:

    【解决方案2】:

    如果您正在使用 VI,您可以shift+k 将在手册页中打开它,如果有这个词的话。我相信它会自动设置为在 man(3) 中搜索,但我不确定 100%。至少这样你就可以知道它是不是系统函数。

    另一种选择是使用 Doxygen 设置调用图并让它生成源(即使没有 cmets)。通过调用图,您可以轻松找出每个函数的来源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      相关资源
      最近更新 更多