在C++中,int main(void)是有效的吗?

9

C++标准列表允许以下形式的main。它没有将int main(void)列为允许的形式。但是,它通常说明:

参数列表(void)等效于空参数列表

int main(void)是一种允许的形式吗?


可能是吧? - HolyBlackCat
10
在C++中,使用空参数列表和使用 void 是相同且可互换的。这是与C语言的一个重大差异之一,因为在C中,声明时没有参数的函数(即空括号对“()”)可以接受任意数量的未指定参数。 - Some programmer dude
@HolyBlackCat 或许可以关闭并标记为重复?因为这只是那个问题的一个子集。 - M.M
2个回答

10

来自 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函数的一种允许形式。


0

除了@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)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接