tangguo

C ++或C中的foo(void)和foo()之间有区别吗?

java

请考虑以下两个函数定义:

void foo() { }

void foo(void) { }

两者之间有什么区别吗?如果没有,那为什么会有void争论呢?审美原因?


阅读 471

收藏
2020-12-07

共1个答案

一尘不染

在C中:

void foo()表示“带有foo未指定类型的未指定数量的参数的函数”
void foo(void)表示“foo不带参数的函数”
在C ++中:

void foo()表示“foo不带参数的函数”
void foo(void)表示“foo不带参数的函数”
foo(void)因此,通过编写,我们可以在两种语言中实现相同的解释,并使标头变为多语言(尽管我们通常需要对标头做更多的事情才能使它们真正成为跨语言;也就是说,extern "C"如果要编译,则将它们包装在C ++)。

2020-12-07