为什么C中总是有main函数?
使用 C 编写代码时,代码必须包含 main 函数。我一直对此有疑问。在 Python 或 JavaScript 的情况下,不需要 main 函数。但是,在 C 的情况下,我为什么要包含 main 函数?
这会提高性能吗?
还是只是为了区分主要部分和其他部分?
如果您能解释原因,我将不胜感激。
回答
有两个主要原因,它们是相关的。
首先,对于任何给定的可执行文件,重要的是要知道从哪里开始执行。在像 Python 这样的语言中,有一个脚本可以执行,虽然它可以包含其他代码,但可以理解的是,有一个“主”脚本。
在像 C 这样的语言中,情况并非如此,在这种语言中,许多文件被编译并链接在一起成为最终的可执行文件。这些文件的编译和链接顺序在很大程度上是无关紧要的,一般来说,它们都被平等对待。因此,main为入口点保留了一个名为“特殊”的函数。
在 C 和扩展 C++ 中,有很多事情你必须在函数内部做,而这在你的代码主体中是不允许的。在其他语言中,这种区别不适用。在 C 中,您至少需要一个函数来做任何有用的事情,并且该函数将被调用main。
这种区别并不是专门针对像 Python 这样的脚本语言与像 C 这样的编译语言。Swift 是经过编译的,但允许在不需要main()函数的情况下进行类似脚本的编码。这完全是语言设计的一个功能,在限制条件下什么是有意义的。
这也仅适用于可执行文件。对于库来说,没有一个入口点,而是与您拥有的函数一样多。您导出的任何函数都可以随意以任何顺序调用,至少在库定义的 API 允许的情况下。
您甚至可以将可执行文件视为具有有效一个功能的“库”:main().