9

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

4

2 回答 2

12

gcc 有一个选项可以警告您:

gcc -Wmissing-prototypes

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

gcc -Werror=missing-prototypes

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

基于编辑更新

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

于 2013-04-12T14:36:04.350 回答
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'

于 2013-04-29T19:53:09.173 回答