为什么首选函数原型中没有参数?

Why is no argument in a function prototype preferred?

我对 C++ 中的编码风格有疑问。

我更喜欢在函数原型中明确使用 void

但是,在阅读维基百科中关于 void type 的文章时,我发现最好不要在函数原型中给出参数。

很好奇有没有具体的原因

什么是首选和什么是好的做法是完全不同的。我相信这只是程序员的选择。

C++ 在 C 之前有函数原型,C++ 有 'always' 必需的有效原型。因此,空括号(圆括号)表示没有参数没有任何问题或歧义。

相比之下,C 在 C++ 拥有函数原型很久之后才获得函数原型,并且它有一个遗留基础需要处理。在引入函数原型之前,具有 non-integer return 类型的 C 函数必须声明为:

double sin();
char *malloc();   /* There wasn't void * -- or C++ style // comments */
struct whatnot *new_whatnot();

C 标准化委员会无力破坏所有现有的 C 代码;该标准将失败。因此,C 标准制定者采用 sometype function(void) 来明确指示 'no arguments'。直到今天,sometype function() 意味着 'a function returning a sometype value taking an undefined (but not variable) number of arguments of undefined type'。

因为 C++ 有空括号(空圆括号)表示法,所以不需要 (void) 表示法,但它被添加到 C++ 中以匹配 C 标准并使代码在标准之间更容易迁移C 和 C++。

  • 本机为 C++ 编写的代码应该使用本机的空括号表示法。
  • 为 C 原生编写的代码必须 使用明确的 (void) 符号,因为空括号意味着完全不同的东西(并且相对不受欢迎)。
  • 编写为可在 C 和 C++ 之间迁移的代码可以使用显式 (void) 表示法来确保两个编译器看到相同的规范。