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