10

我正在尝试“武装”编译一个 C 文件,它递归地包含许多头文件..我正在尝试查找这些头文件的列表..有没有更简单的方法来查找它包含的所有头文件的列表?

4

3 回答 3

13

您可以使用带有选项的 GCC C 预处理器来转储递归包含的标头列表:

cpp -M

这将显示所有包含的标题。

您可能需要为其提供常规构建中使用的所有包含目录的根。迭代运行它,添加更多包含路径,直到错误停止。

此用法中此命令的完整形式为:

cpp -M [-I include_directory *] path_to_c_file.c
于 2013-04-12T16:11:22.333 回答
2

根据http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html#Preprocessor-Options -H 和 -M 选项可用于此目的。

另一种选择是使用http://www.doxygen.nl/并生成项目的文档,之后您可以检查它以查看文件依赖关系:),这是首选,因为它支持多种语言:C、C++、Objective- C、C#、PHP、Java、Python、IDL(Corba 和 Microsoft 风格)、FORTRAN、VHDL、Tcl。

于 2013-04-12T18:41:35.397 回答
0

大多数编译器都有开关,使它们只预处理文件。#include他们将 all ' 扩展为实际代码意味着什么。通常它们确实在原始包含行中包含注释(正确的 C 注释)。因此,您可以在生成的预处理代码中搜索所有此类注释以收集所有包含的标头。

于 2013-04-12T16:11:42.637 回答