为什么main函数首先在c / c ++中运行? [重复]

问题描述 投票:-2回答:4

这个问题在这里已有答案:

为什么main()函数首先运行然后运行其他函数如果我们想要先运行另一个函数然后运行c或c ++中的main函数。任何人都可以解释它背后的逻辑。谢谢。

c++ c
4个回答
4
投票

因为这就是标准定义要使用的语言(这里引用的C ++):

[basic.start.main]

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

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

从技术上讲,它不一定是最终组件中的第一个call。编译器可以插入一些额外的启动代码(如初始化变量等),这些代码本身可以分组为函数。这是出于C ++程序开发人员的关注,但在嵌入式系统中变得非常重要,您需要/想要了解几乎所有执行的指令。


3
投票

程序必须从某个地方开始...就开发人员而言,通常是main() - 被称为“entry point”。

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

#include <stdio.h>

void init(void) {
    /* startup */
}

void run(void) {
    /* application functionality */
}

int main(void) {
    init();

    run();

    exit 0;
}

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

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

0
投票

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


0
投票

您需要在执行开始的程序中占有一席之地。在C中它是功能主要的。

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

© www.soinside.com 2019 - 2024. All rights reserved.