我正在试图“武装”编译一个C文件,它包含了很多递归的头文件。我正试图找到这些头文件的列表..有一种更简单的方法来查找所有头文件的列表它包含哪些文件?
答案 0 :(得分:11)
您可以使用GCC C预处理器及其选项来转储递归包含的标头列表:
cpp -M
这将显示所有标题。
您可能需要为常规版本中使用的所有包含目录提供根。迭代运行,添加更多包含路径,直到错误停止。
此用法的完整形式是:
cpp -M [-I include_directory *] path_to_c_file.c
答案 1 :(得分: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。
答案 2 :(得分:0)
大多数编译器都已切换到只对文件进行预处理。除此之外,他们将所有#include
扩展为实际代码意味着什么。通常他们确实在原始包含的行上包含评论(适当的C评论)。因此,您可以搜索结果预处理代码以获取所有此类注释,以收集所有包含的标题。