我如何找出哪个 header/include 在源代码中声明了哪些变量?

How do I find out which header/include declared what variables in source?

如果我看到 structtypedefconst 或正在使用的任何其他未在我正在阅读的源代码中明确声明的变量,是否有Linux 中的标准方法来发现哪些源包含的 header 文件提供了变量声明?

我一直在谷歌搜索每个人 header 并希望我正在寻找的东西被宣布,但必须有更好的方法!

我知道你可以 man <standard_func>,但这似乎太宽泛了,无法找出声明的地方。系统内或网站上是否提供权威文档?

由于您已经在使用 vim,我建议安装 ctags 包,这样您就可以直接在编辑器中跳转到那些声明。

安装后,创建一个ctags 文件。这将解析指定路径中的所有源代码文件,并创建一个名为 tags:

的文件

ctags -R /usr/include .

请注意,我们指定了 /usr/include 以及当前目录,其中可能包含您正在阅读的源代码。如果它在不同的目录中,请改为指定那个目录。

完成后(稍等片刻),打开您感兴趣的文件。如果您仍在与新 tags 文件相同的目录中,vim 将具有已经加载了它。否则你将不得不 :set tags=/path/to/tags.

现在只需将光标放在您不知道的符号上,然后按 Ctrl-]。或者,如果您使用的是 vim 的 GUI 版本,您可以在按住 Ctrl 的同时单击左键。无论哪种方式,这都会跳转到符号的声明。

Ctrl-T 返回原来的位置。

一旦掌握了窍门,请查看 :help tags:help tagstack。 vim 广泛支持与他们合作。