我需要从几个.h文件中删除一堆函数原型,我想知道是否有某种bash脚本/程序来查找不在.c文件中的原型并自动删除它们。
当您拥有一个大型项目并且没有跟踪所有更改时,这对于源代码清理非常有用。
请注意,它与二进制文件没有任何关系,我想从代码中删除它们。
答案 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中不需要包含其他内容。