从.h文件中删除未使用的函数原型

时间:2010-11-02 13:53:09

标签: c header-files

我需要从几个.h文件中删除一堆函数原型,我想知道是否有某种bash脚本/程序来查找不在.c文件中的原型并自动删除它们。

当您拥有一个大型项目并且没有跟踪所有更改时,这对于源代码清理非常有用。

请注意,它与二进制文件没有任何关系,我想从代码中删除它们。

5 个答案:

答案 0 :(得分:2)

我不知道任何符合您需求的程序;但是通过一些整洁的横向思维,你到达cproto,这就是你所需要的。只需删除当前头文件,运行cproto即可获得一个仅包含相关原型的新文件,并在序言中输入所需的宏和typedef。

答案 1 :(得分:1)

您可以使用makeheaders生成包含正确原型列表的头文件,并使用这些头文件,或者使用cut'n'paste定义来替换现有头文件中的定义

答案 2 :(得分:1)

您可以使用自己喜欢的脚本语言实现此循环:

对于每个.c文件,找到相应的.h文件。将.h文件中的所有原型设为静态。编译.c文件。清除有关未定义静态声明的编译器错误。恢复剩余的原型。

答案 3 :(得分:1)

这并不是你想要的,但可能会接近。如果你使用doxygen,你可以让它生成一大堆列表,并将它们可视化为图形。其中一个是函数的called by关系,另一个是文件的included by关系。

您不需要输入doxygen特殊注释,您可以将其用作有关项目的结构信息。

答案 4 :(得分:1)

我尝试了cproto和makeheaders。

第一个按预期工作:我创建了头文件,然后我复制了typedef定义,包括其他头文件(重要!)等等,一切正常。

makeheaders有点复杂/聪明,因为它会根据.c中的包含创建.h,因此.h中不需要包含其他内容。