为什么主函数在 C/C++ 中首先运行?
why main function run first in c/c++?
为什么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
代码之前为您的程序准备执行环境,它被称为 启动代码。
相关文章:
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 代码在main()中运行,但在函数中出现错误
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何在运行中期切换GTK CSS style_context
- 如何在MS Visual Studio 2019中运行QT UI
- 如何通过cpp程序运行shell脚本
- IPC使用多个管道和分支进程来运行Python程序
- 删除指向指针的指针是运行时错误吗
- 如何用参数值调用函数(仅在运行时已知)
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- c++中的指针和运行时错误
- 在C应用程序中运行C++(带有STL)函数
- 运行程序时出现问题
- 控制允许动态运行c++的并发操作数
- 无法获取菜单选择以运行函数.C++