【发布时间】:2015-10-21 19:15:09
【问题描述】:
我在 C 项目中有一个模块,其中包含大量源文件和头文件。它们包括许多外部头文件,来自同一项目的 libc 和其他模块。我想收集这些外部头文件中实际使用的标识符列表。不仅仅是符号,还有所有外部类型定义、内联函数、宏等。
我想编译一个列表来查看该模块具有哪些外部依赖项,因此如果我想将该模块移动到一个完全不同的项目中,我可以看到究竟需要移植/重写/丢弃什么。在这种特殊情况下,我对 libc 依赖项不感兴趣,而是对来自同一项目的其他模块的依赖项感兴趣。
我最接近的方法是暂时删除包含指令,如下所示:
sed -i s/"#include <.*>"//g *.c
sed -i s/"#include <.*>"//g *.h
然后用 -Wno-unused 编译文件,这样我就可以看到由于缺少标题而导致的错误消息。但它仍然远非一个易于阅读的外部标识符列表。
【问题讨论】:
-
你为什么这么关心使用过的标识符?您提出问题的确切动机是什么?请编辑您的问题以改进它!
-
即使进行了编辑,我仍然不明白您的动机。一旦您使用任何外部库,您很可能不会使用其中的所有名称...
-
没错,我并没有使用来自外部库的所有标识符,我只是想知道从这些外部来源中究竟使用了什么。因为它仍然是相当大的一段代码,其中有很多对外部代码的引用,而不是逐行遍历它并收集使用的类型/函数/宏的列表,我想要一些更自动化的东西。这将帮助我计划和准备交换到另一个外部库,该库(据我现在所见)具有此代码现在使用的内容。
标签: c gcc identifier