我知道在 C 中,在应用程序可以开始之前main(),某些实体必须:
问题 1 - 做这些事情的实体是什么?谁写的?
问题 2 - C++ 中还有其他东西吗?我假设对象构造函数和初始化都是在应用过程中完成的,之后 main()
很大程度上取决于执行环境。在 C 运行时启动之前,操作系统加载程序可能会完成大量工作,这是可执行文件运行的特定部分。设置执行环境的这个依赖于操作系统的部分对于所有本机(机器语言)可执行文件都是通用的,无论源实现语言如何。
操作系统扮演的角色以及可执行文件中的代码执行的内容因执行环境而异。操作系统加载程序(在非独立系统中)负责将代码加载到内存中,并且可能涉及加载和链接动态链接库(DLL 或共享库,具体取决于操作系统术语)。无论是操作系统还是 C 运行时责任,通常会发生以下情况:
main()为( argv,argc参数)创建堆栈帧例如,在 GCC 和其他一些编译器中,在程序启动之前由程序而不是操作系统执行的部分是由名为crt0.o的单独链接模块执行的。这通常是用汇编程序编写的,并且默认情况下会自动链接。
有关更多示例和讨论,请参阅: