如何在没有原型的情况下找到C函数?

时间:2013-04-12 14:33:51

标签: c function-prototypes

公司政策规定C源代码中的每个函数都有一个原型。我继承了一个带有自己的make系统的项目(所以我不能在gcc或Visual Studio上测试它),并发现其中一个文件有一些声明没有原型的静态函数。是否有一种方法(不一定是编译器)列出所有.c文件中没有原型的所有函数?

2 个答案:

答案 0 :(得分:12)

gcc可以选择警告你:

gcc -Wmissing-prototypes

您可以将此警告转为错误以停止编译并强制用户修复它:

gcc -Werror=missing-prototypes

如果您只想列出它,可以使用gcc选项-Wmissing-prototypes进行编译,并在日志中使用grep 以前没有原型

根据修改进行更新

由于您现在提到不能使用gcc,因此您必须为当前编译器找到类似的选项。大多数编译器都有这样的选择。从手册页或内置帮助输出开始。

答案 1 :(得分:5)

ctags可以做到!

--c-kinds=p生成所有函数原型的列表

--c-kinds=f生成所有函数定义的列表

现在你只需要比较它们。

diff -u <(ctags -R -x --sort=yes --c-kinds=f | cut -d' ' -f1) <(ctags -R -x --sort=yes --c-kinds=p | cut -d' ' -f1) | sed -n 's/^-//p'