<分区>
我看到一些 C/C++ 代码是这样的:
void Main(void)
和
int Main(void)
这样做的原因是什么:为什么它不是参数而是用在void/int e.t.c名称后面的括号中?
<分区>
我看到一些 C/C++ 代码是这样的:
void Main(void)
和
int Main(void)
这样做的原因是什么:为什么它不是参数而是用在void/int e.t.c名称后面的括号中?
最佳答案
参数列表中的
void
实际上是一个关键字,不指定任何内容的类型。它存在的原因纯粹是历史原因。
早期的 C 没有函数原型(prototype)或任何参数列表语法。函数定义如下所示:
foo()
int x; // These are the parameters.
float y;
{
return x + (int) y;
}
“不需要”原型(prototype),因为编译器会假设每次调用都传递了正确的参数类型和数量。这很容易出错。此外,返回类型被假定为 int
,这是一个更脆弱的假设。第一个原型(prototype)仅指定返回类型。
float foo(); // Still no parameters.
当引入熟悉的 float foo( int x, float y )
语法时,保留了与先前样式的向后兼容性。 void
关键字用于区分不确定(缺失)参数列表和空参数列表。
在 C 中,float foo()
和 float foo( void )
至今有不同的含义。
在 C++ 中,不支持不确定的参数列表,并且 float foo( void )
是 float foo()
的同义词,但并未弃用。
此外,C++ 允许模板确定参数的类型,但通过模板生成(void)
参数列表是错误的。
关于c++ - C/C++ - (void) 如何不用作参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20016110/