为什么主函数在 C/C++ 中首先运行?

why main function run first in c/c++?

本文关键字:运行 C++ 函数 为什么      更新时间:2023-10-16

为什么main((函数首先运行其他函数,如果我们希望另一个函数先运行,然后在C或C ++中运行main函数怎么办。 谁能解释它背后的逻辑,谢谢。

因为这是标准定义要使用的语言(此处引用C++(:

[basic.start.main]

程序应包含一个名为main的全局函数。执行程序会启动一个执行主线程 (...(,其中调用了 main 函数 (...(

因此,编译器必须以在操作系统启动程序时调用main的方式生成二进制文件,或者在独立环境中,在加载程序时

调用二进制文件。从技术上讲,它不一定是生成的程序集中的第一个call。编译器可以插入一些额外的启动代码(如初始化变量等(,这些代码本身可以分组到函数中。这是出于C++程序开发人员的担忧,但在嵌入式系统上变得非常重要,您需要/想要了解几乎执行的每一条指令。

程序必须从某个地方开始...就开发人员而言,这通常是main()- 称为">入口点"。

如果你想在程序开始时做某些事情,那么只需将main()的内容移动到另一个函数(如run()(,并在调用run()之前将启动代码放在main()中。

#include <stdio.h>
void init(void) {
/* startup */
}
void run(void) {
/* application functionality */
}
int main(void) {
init();
run();
exit 0;
}

就更广泛的系统而言,首先会发生一定数量的设置:

  • 需要创建流程(例如:fork()(
  • 堆栈需要准备
  • 全局变量需要初始化
  • 等。。。

这是因为您可以在程序中创建任意数量的函数。 您可以有 1 个函数、10 个、2340 个函数或其他任何函数。 该程序需要知道从哪里开始。 这是main函数的目的,因为这始终是调用的第一个函数。

您需要在开始执行的程序中有一个位置。在C中,它是函数main。

但是程序在调用主程序之前开始执行。在main代码之前为您的程序准备执行环境,它被称为 启动代码。