我如何找出哪个 header/include 在源代码中声明了哪些变量?
How do I find out which header/include declared what variables in source?
如果我看到 struct
、typedef
、const
或正在使用的任何其他未在我正在阅读的源代码中明确声明的变量,是否有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 广泛支持与他们合作。
如果我看到 struct
、typedef
、const
或正在使用的任何其他未在我正在阅读的源代码中明确声明的变量,是否有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 广泛支持与他们合作。