在C+或C中foo(Void)和foo()之间有什么区别吗?

在C+或C中foo(Void)和foo()之间有什么区别吗?

考虑这两个函数定义:

void foo() { }void foo(void) { }

这两者有什么区别吗?如果没有,为什么void有争论吗?审美原因?


四季花海
浏览 714回答 3
3回答

摇曳的蔷薇

在……里面C:void foo()意思是“一个函数”foo获取未指定类型的未指定数量的参数“void foo(void)意思是“一个函数”foo不争论“在……里面C+:void foo()意思是“一个函数”foo不争论“void foo(void)意思是“一个函数”foo不争论“通过写作foo(void)因此,我们在两种语言之间实现了相同的解释,并使我们的标头以多语种(虽然我们通常需要对标题做更多的事情来使它们真正地跨语言;也就是说,将它们封装在extern "C"如果我们正在编译C+)。

叮当猫咪

我知道你的问题与C+有关,但对于C,答案见K&R,第72-73页:此外,如果函数声明不包括参数,如double atof();这也意味着对atof的参数没有任何假设;所有参数检查都被关闭。空参数列表的这一特殊含义是为了允许旧的C程序使用新的编译器进行编译。但是在新的程序中使用它是个坏主意。如果函数接受参数,则声明它们;如果不使用参数,则使用void。
打开App,查看更多内容
随时随地看视频慕课网APP