繁体   English   中英

如何最好地解决这两个警告(旧式的C函数声明不是原型)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM