在C/C++程序中,系统(Windows、Linux、Mac OS X)如何调用main()函数?

2022-05-31 00:00:00 main c c++

我正在寻找比操作系统调用该函数更技术性的解释。

谁能帮我解决问题,或者给我指个网站或书?


解决方案

.exe文件(或其他平台上的等效文件)包含一个"入口点"地址。大致来说,操作系统会将.exe文件的相关部分加载到RAM中,然后跳到入口点。

正如其他人所说,这个入口点将不是‘main’,而是运行时库的一部分-它将执行初始化静态对象、设置argc/argv参数、设置stdin/stdout/stderr等操作。当它完成所有这些工作后,它将调用您的main()函数。当Main退出时,运行库将经历一个类似的过程:将返回代码传递回环境、调用静态析构函数、调用_atexit例程等。

如果您有MS工具(可能不是免费的),那么您就拥有所有的运行时源代码,查看它的一种简单方法是在main()方法的结束括号上放置一个断点,然后单步返回运行时。

相关文章