我目前正在重构/整理 C++ 项目中使用的一些旧 C 代码,并经常看到以下函数:
int f(void)
我倾向于写成:
int f()
是否有任何理由不在整个代码库中用 () 替换 (void) 以提高一致性,或者两者之间是否存在我不知道的细微差别?
更具体地说,如果 C++ 中的虚成员函数被描述为:
virtual int f(void)
派生类包括一个成员函数:
int f()
这是一个有效的覆盖吗?此外,我是否可能会遇到任何基于几乎相同签名的链接器问题?
原文由 SmacL 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 C 中,声明
int f(void)
表示返回不带参数的 int 的函数。声明int f()
表示返回 int 的函数,该函数采用任意数量的参数。因此,如果您有一个在 C 中不带参数的函数,则前者是正确的原型。在 C++ 中,我相信
int f(void)
已被弃用,而int f()
是首选,因为它特别表示不带参数的函数。