C/C++ void参数

  • Post author:
  • Post category:其他



一. C

在C程序中如果在

声明函数

的时候如果没有任何参数那么需要将参数定义为void以此来限定此函数不可传递任何参数,如果不进行

限定

让参数表默认为空其意义是可以传递任何参数,这个问题的由来实际上是由于要兼容早期的

K&C标准

造成的。K&C在

声明函数

时参数表为空,也就是说函数声明时的函数原型签名信息不包含参数信息,如果要有明确地定义空参数的行为那么就要自己去处理它。以下是C代码:

// 空参数表代表可以传递任意的参数。
void fun();
fun(1);           // 正常编译。
fun(1, 2, 3);     // 正常编译。
// 参数表定义为void才是表示不能传递任何参数。
void noargfun(void);
noargfun(1);      // 编译错误,有的编译器仅仅是警告。


二. C++

在C++中定义函数时是否有必要对无参数的函数列表定义void参数呢?答案是No。

C++标准

规定如果没有对参数列表进行定义那么就表示函数不能传递任何参数,这从

语义

上来讲更符合人的思维方式。以下是C++代码:

// 空参数表的意义是不可以传递任何参数。
void fun();      // void fun(void)含义相同。
fun(1);          // 编译错误。
fun(1, 2, 3);    // 编译错误。

当然如果指定义函数,void那么不管在C还是C++都表示不可以传递任何参数。


转载于:https://my.oschina.net/wangsifangyuan/blog/1507383