为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++ C
四季花海 2019-07-22 16:56:20
在C+或C中foo(Void)和foo()之间有什么区别吗?考虑这两个函数定义:void foo() { }void foo(void) { }这两者有什么区别吗?如果没有,为什么void有争论吗?审美原因?
查看完整描述

3 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

在……里面C:

  • void foo()

    意思是“一个函数”

    foo

    获取未指定类型的未指定数量的参数“
  • void foo(void)

    意思是“一个函数”

    foo

    不争论“

在……里面C+:

  • void foo()

    意思是“一个函数”

    foo

    不争论“
  • void foo(void)

    意思是“一个函数”

    foo

    不争论“

通过写作foo(void)因此,我们在两种语言之间实现了相同的解释,并使我们的标头以多语种(虽然我们通常需要对标题做更多的事情来使它们真正地跨语言;也就是说,将它们封装在extern "C"如果我们正在编译C+)。


查看完整回答
反对 回复 2019-07-22
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

我知道你的问题与C+有关,但对于C,答案见K&R,第72-73页:

此外,如果函数声明不包括参数,如

double atof();

这也意味着对atof的参数没有任何假设;所有参数检查都被关闭。空参数列表的这一特殊含义是为了允许旧的C程序使用新的编译器进行编译。但是在新的程序中使用它是个坏主意。如果函数接受参数,则声明它们;如果不使用参数,则使用void。


查看完整回答
反对 回复 2019-07-22
  • 3 回答
  • 0 关注
  • 713 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信