Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有原型的情况下找到C函数?_C_Function Prototypes - Fatal编程技术网

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

如何在没有原型的情况下找到C函数?,c,function-prototypes,C,Function Prototypes,公司政策规定C源代码中的每个函数都有一个原型。我继承了一个带有自己make系统的项目(因此我无法在gcc或visualstudio上测试它),并发现其中一个文件有一些没有原型的静态函数。是否有一种方法(不一定使用编译器)列出所有.c文件中没有原型的所有函数?gcc有一个选项来警告您: gcc -Wmissing-prototypes 您可以将此警告转化为错误以停止编译并强制他人修复它: gcc -Werror=missing-prototypes 如果您只想列出它,您可以使用gcc选项-Wm

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

gcc有一个选项来警告您:

gcc -Wmissing-prototypes
您可以将此警告转化为错误以停止编译并强制他人修复它:

gcc -Werror=missing-prototypes
如果您只想列出它,您可以使用
gcc
选项
-Wmissing prototype
和grep编译日志中的没有以前的原型

基于编辑的更新


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

ctags
可以做到这一点

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

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

现在你只需要比较一下


diff-u静态函数并不真正需要原型,除非在原型之前调用它们defined@Paul:是的,但我认为它允许项目经理快速查看可用的函数等。如果由于未知原因无法使用其他编译器,则必须使用单独的静态分析器工具。市场上的所有此类工具都会为您找到所有缺失的原型
它自己的制造系统
-您是什么意思?那么我猜@Lundin的解决方案适用;除非编译器有一个选项来检测缺少的原型,比如gcc hasSorry,如果我不清楚的话,但是它有自己的构建系统,所以我不能在gcc上测试它。“构建系统”!=“编译器”。我假设这个定制构建系统使用的任何编译器(gcc/icc/clang/…)都有各种选项/开关来启用警告/错误等。这将是开始的地方,即使它不是gcc。。。