C++标准列表允许以下形式的main
。它没有将int main(void)
列为允许的形式。但是,它通常说明:
参数列表(void)等效于空参数列表
int main(void)
是一种允许的形式吗?
C++标准列表允许以下形式的main
。它没有将int main(void)
列为允许的形式。但是,它通常说明:
参数列表(void)等效于空参数列表
int main(void)
是一种允许的形式吗?
来自 N3936 标准草案:
3.6 开始和终止
3.6.1 主函数
2 实现不得预定义主函数。该函数不应该被重载。它应声明为返回 int 类型,但其类型是实现定义的。一个实现应允许两种类型的 main 函数:
— 返回 int 的 () 函数 和
— 返回 int 的 (int、指向指针的 char) 函数
作为 main 的类型(8.3.5)。
然后:
8.3.5 函数
4 ... 由单个未命名非依赖类型 void 参数组成的参数列表等效于一个空参数列表。 ...
因此,
int main(void)
是main
函数的一种允许形式。
除了@Some programmer dude和@Edgar的回答之外,这是草案的一部分,解释了C++和标准C之间的差异:
C.1.7条款8:声明符[dif.decl]
8.3.5
更改:在C ++中,使用空参数列表声明的函数不带任何参数。在C中,空参数列表意味着函数参数的数量和类型未知。
例如:
int f(); // 在C ++中表示int f(void)
// 在C中表示int f(unknown)
void
是相同且可互换的。这是与C语言的一个重大差异之一,因为在C中,声明时没有参数的函数(即空括号对“()”)可以接受任意数量的未指定参数。 - Some programmer dude