【发布时间】:2011-11-14 09:50:58
【问题描述】:
我在一段其他人的代码中修复了一些函数,其中包含许多不带参数的函数。 他们被宣布为
return_type_t func();
而不是 return_type_t func(void);
然后我发现其中一堆被放入带有函数指针的结构数组中。 当我将函数指针固定为 void 时,它给了我另一个警告,因为函数的 1 使用了 char* 而不是 void ptr。
在没有大量重写的情况下,这种事情的最佳解决方案是什么(因为代码很复杂,我主要是在边缘清理它并希望避免改变它的流动方式)?
【问题讨论】:
-
没有参数的函数声明没有错。规范甚至允许这样做。
-
当心:当您巧妙地更改类型和函数调用等时,像这样的“清理”通常会引入错误。根据我的经验,这样做是浪费时间。我会添加空格、cmets、额外的单元测试,但不会更多!
-
不仅仅是定义和/或声明。这也与使用有关。函数是如何调用的?是否所有函数在调用时总是给定一个 char* 作为参数?
-
似乎只有一个参数被传递,但我会检查。
标签: c function-pointers gcc-warning function-prototypes