我正在试图弄清楚是否可以仅使用C语言本身打印标题层次结构(如在quines中)。目标是获取一组树,其中root是.c
文件,而叶子是不包含任何其他标头的基础头。可能的输出:
start: header1.h->header2.h->header3.h;header1.h->header4.h; end
这意味着header1.h
包含两个标题:header2.h
和header4.h
。
看起来我尝试这样做Print headers hierarchy根本不起作用。但是有没有办法使用预处理器或任何其他语言功能来打印标题层次结构?或者我应该只使用Python脚本?
修改:
@stijn在注释中提出的使用编译器选项-H
的解决方案实际上并没有完成全部工作,因为它不会打印两次头文件。因此,对于稍后包含的标题,层次结构将是部分的。
问题How to tell where a header file is included from?是关于标头的绝对路径以及编译器实际在磁盘上找到特定标头的位置。我的问题是关于标题包含层次结构 - 哪个标题包含哪些标题?所以磁盘头的位置无关紧要。