为什么main()需要括号?

use*_*735 2 c++ program-entry-point language-design

我尝试了几种变体

main() return;
Run Code Online (Sandbox Code Playgroud)

要么

main() if();
Run Code Online (Sandbox Code Playgroud)

并获得了不同的错误,其中最奇特的是

/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status

虽然程序只需要一个语句并不常见,但为什么main()要求使用大括号?

有人可以解释为什么在编译int main()时错误是如此奇特;?

Jer*_*fin 8

它并不是唯一的 - 任何函数的主体必须用大括号包围.具体而言,§8.4/ 1将函数体定义为"复合语句"(对于真正的迂腐,§6.3/ 1将复合语句定义为:"{statement-seq opt }".


Jam*_*lis 8

因为你定义了一个名为main()的函数,函数定义基本上是一个函数声明(int main()部分),后跟一个复合语句({ /* ... */ }部分)(你也可以使用函数try块,但这些很少使用,仍然需要大括号) .

没有大括号,您无法定义任何功能.


Jas*_*aat 5

因为它是一种功能.这是语法的一部分.