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