[英]How to best fix both warnings(old style c-function declaration isn't a prototype)
我在其他人的代码中修复了一些函数,其中包括许多不带参数的函数。 他们被宣布为
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
,而该参数(void) parameter
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.