我正在修改一些其他代码中的函数,其中包含许多不带参数的函数。 他们被宣布为
return_type_t func();
而不是
return_type_t func(void);
然后我发现其中一堆被放入带有函数指针的结构数组中。 当我修复了函数指针以取消void时,它给了我另一个警告,因为函数中的1个使用了char *而不是void ptr。
没有大量重写这种事情的最佳解决方案是什么(因为代码很复杂,我主要是在边缘清理它并希望避免改变它的流动方式)?
答案 0 :(得分:1)
struct
定义需要在成员中列出正确的函数类型,如果您想要类型安全,则无法解决此问题。
答案 1 :(得分:0)
在C中,旧式声明return_type_t func()
并不意味着func
不带参数,这意味着未指定其参数的数量和类型(如果有)。您不能只假设您可以在括号内添加void
。
如果没有看到更多代码,我的建议是分别调查每个函数,找出每个函数的正确数量和类型,然后相应地填写原型。
答案 2 :(得分:0)
您可以重写所有原型以获取char *,然后转换为参数无效的(void) parameter