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()时错误是如此奇特;?
它并不是唯一的 - 任何函数的主体必须用大括号包围.具体而言,§8.4/ 1将函数体定义为"复合语句"(对于真正的迂腐,§6.3/ 1将复合语句定义为:"{statement-seq opt }".
因为你定义了一个名为main()的函数,函数定义基本上是一个函数声明(int main()部分),后跟一个复合语句({ /* ... */ }部分)(你也可以使用函数try块,但这些很少使用,仍然需要大括号) .
没有大括号,您无法定义任何功能.
| 归档时间: |
|
| 查看次数: |
932 次 |
| 最近记录: |