我们平时接触VC++的时候,第一个接触到的恐怕是WinMain和main,对应于Win32子系统的Windows窗口系统和控制台两个部分,最多是某些书籍上谈到了对应多字节字符集的几个变种。其实,这几个入口点函数是VC++带有的C运行库要求的入口点。真正的vc程序的入口点函数是在使用VC++的C编译器编译程序时指定的。它可以是符合下面形式的任何名称的函数:
void __cdecl Your_Entry (void);
如果你喜欢,你可以起一个更加艺术的名字。
说到这里,给出一个样例程序可以更好的理解这个入口点函数和我们平时接触的C运行时入口点函数之间有些什么。这是一个什么都不做的程序
// VC++ Entry point
void MyEntry (void);
{
{
void __cdecl Your_Entry (void);
如果你喜欢,你可以起一个更加艺术的名字。
说到这里,给出一个样例程序可以更好的理解这个入口点函数和我们平时接触的C运行时入口点函数之间有些什么。这是一个什么都不做的程序
// VC++ Entry point
void MyEntry (void);
{
{
(引自:http://www.wangchao.net.cn/bbsdetail_28422.html)
问题一:既然C语言运行库中的入口函数初始化程序运行的环境,然后进入Main函数,那么系统怎么知道运行时库的入口地址的?
答:在系统提供的C语言运行时库中的入口函数统一定为WinMainCRTStartup数,故链接完毕后,操作系统将操作权交由程序入口地址(.ENTRY)开始执行。
而当自己编写的运行库时,自定义的程序入口(例:上文中的MyEntry)需要在编译器中设置入口地址,才能正确执行。或使用命令行:link /ENTRY:”MyEntry” 。