如何最好地修复两个警告(旧式c函数声明不是原型)

时间:2011-11-14 09:50:58

标签: c function-pointers gcc-warning function-prototypes

我正在修改一些其他代码中的函数,其中包含许多不带参数的函数。 他们被宣布为

return_type_t func();
而不是     return_type_t func(void);

然后我发现其中一堆被放入带有函数指针的结构数组中。 当我修复了函数指针以取消void时,它给了我另一个警告,因为函数中的1个使用了char *而不是void ptr。

没有大量重写这种事情的最佳解决方案是什么(因为代码很复杂,我主要是在边缘清理它并希望避免改变它的流动方式)?

3 个答案:

答案 0 :(得分:1)

struct定义需要在成员中列出正确的函数类型,如果您想要类型安全,则无法解决此问题。

答案 1 :(得分:0)

在C中,旧式声明return_type_t func()并不意味着func不带参数,这意味着未指定其参数的数量和类型(如果有)。您不能只假设您可以在括号内添加void

如果没有看到更多代码,我的建议是分别调查每个函数,找出每个函数的正确数量和类型,然后相应地填写原型。

答案 2 :(得分:0)

您可以重写所有原型以获取char *,然后转换为参数无效的(void) parameter