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

时间:2016-01-08 02:55:32

标签: c++ coding-style void

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

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

然而,在阅读维基百科中有关void type的文章时,我发现在函数原型中不提供任何参数是首选。

  • 原型中为什么没有参数?

如果有特殊原因,我很好奇。

2 个答案:

答案 0 :(得分:1)

什么是首选,什么是良好实践是完全不同的。我相信这只是程序员的选择。

答案 1 :(得分:1)

C ++在C之前有函数原型,C ++总是'所需的原型有效。因此,关于空括号(圆括号)没有问题或含糊不清,这意味着没有参数。

相比之下,C在C ++拥有它们之后很久就没有获得函数原型,并且它有一个遗留基础来处理。在引入函数原型之前,必须将具有非整数返回类型的C函数声明为:

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

C标准化委员会不能破坏所有现有的C代码;标准会失败。因此,C标准化者采用sometype function(void)来明确表示没有参数'。到目前为止,sometype function()表示'一个函数返回sometype值,其中未定义(但不是可变)的未定义类型的参数数量为'。

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

  • 本地为C ++ 编写的代码应该使用本机的空括号表示法。
  • 本地为C 编写的代码必须使用显式(void)表示法,因为空括号表示完全不同的(并且相对不合需要)。
  • 编写为可在C和C ++之间迁移的代码可能使用显式(void)表示法来确保两个编译器都看到相同的规范。