【问题标题】:Why is no argument in a function prototype preferred?为什么首选函数原型中没有参数?
【发布时间】:2016-01-08 02:55:32
【问题描述】:

我有一个关于 C++ 编码风格的问题。

我更喜欢在函数原型中显式使用void

但是,在阅读 Wikipedia 中有关 void type 的文章时,我发现在函数原型中不提供参数是首选。

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

我很好奇是否有特定的原因。

【问题讨论】:

  • 没有必要,而且打字更短?

标签: c++ coding-style void


【解决方案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 原生编写的代码必须使用显式的 (void) 表示法,因为空括号表示完全不同的东西(并且相对不受欢迎)。
  • 编写为可在 C 和 C++ 之间迁移的代码可能会使用显式 (void) 表示法来确保两个编译器看到相同的规范。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-03-18
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-16
      • 2015-01-12
      相关资源
      最近更新 更多