【发布时间】:2016-01-08 02:55:32
【问题描述】:
我有一个关于 C++ 编码风格的问题。
我更喜欢在函数原型中显式使用void。
但是,在阅读 Wikipedia 中有关 void type 的文章时,我发现在函数原型中不提供参数是首选。
- 为什么原型中没有参数是首选?
我很好奇是否有特定的原因。
【问题讨论】:
-
没有必要,而且打字更短?
标签: c++ coding-style void
我有一个关于 C++ 编码风格的问题。
我更喜欢在函数原型中显式使用void。
但是,在阅读 Wikipedia 中有关 void type 的文章时,我发现在函数原型中不提供参数是首选。
我很好奇是否有特定的原因。
【问题讨论】:
标签: c++ coding-style void
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++ 之间迁移代码。
(void) 表示法,因为空括号表示完全不同的东西(并且相对不受欢迎)。(void) 表示法来确保两个编译器看到相同的规范。【讨论】:
什么是首选和什么是好的做法是完全不同的。我相信这只是程序员的选择。
【讨论】: