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

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

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

C
江户川乱折腾 2019-07-26 15:14:08
在C+或C中foo(Void)和foo()之间有什么区别吗?考虑这两个函数定义:void foo() { }void foo(void) { }这两者有什么区别吗?如果没有,为什么void有争论吗?审美原因?
查看完整描述

3 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

在……里面C:

  • void foo()

    意思是“一个函数”

    foo

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

    意思是“一个函数”

    foo

    不争论“

在……里面C+:

  • void foo()

    意思是“一个函数”

    foo

    不争论“
  • void foo(void)

    意思是“一个函数”

    foo

    不争论“

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



查看完整回答
反对 回复 2019-07-27
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

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

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

double atof();

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




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

添加回答

举报

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