【发布时间】:2021-05-06 06:26:46
【问题描述】:
使用 C 编写代码时,代码必须包含 main 函数。我一直有一个关于这个的问题。在 Python 或 JavaScript 的情况下,不需要 main 函数。但是,在 C 的情况下,我为什么要包含 main 函数?
这会提高性能吗?
还是只是为了区分主要部分和其他部分?
如果您能解释原因,我将不胜感激。
【问题讨论】:
-
C 程序是通过编译多个源文件并将生成的机器代码链接在一起而构建的。如果 C 允许在全局范围内运行任意语句(这基本上是 JavaScript 和 Python 所做的),你将如何控制来自多个模块的语句的运行顺序?
-
main 函数的一个用途是作为程序其余部分的入口点(例如,如果您看到任何程序集,您会注意到有一个名为 @ 的全局入口点987654322@ 或
main所有代码开始的地方。高级语言中的 main 函数通常是那个入口点)。更多信息:en.wikipedia.org/wiki/Entry_point -
@mediocrevegetable1 Linux 中编译的二进制程序可能同时具有
_start和main。在调用main之前还有很多工作要做,比如一些glibc初始化的东西等等。 -
嗯,有趣。我想我今天什至学到了一些东西。
-
将
main()指定为入口点意味着所有C 或C++ 程序员都知道寻找main()函数来查找大多数程序开始执行的位置。在解释型语言中,通常不需要像main()这样的函数,因为指定了其他启动程序的方式(例如,在提供给解释器的第一个脚本中具有某些特征的第一个函数)。与具有单一设计入口点的 C 或 C++ 相比,这些方法既有优点也有缺点(尽管main()可以有不同的签名)。
标签: c++ c architecture