C语言运行库简介

我们平时接触VC++的时候,第一个接触到的恐怕是WinMain和main,对应于Win32子系统的Windows窗口系统和控制台两个部分,最多是某些书籍上谈到了对应多字节字符集的几个变种。其实,这几个入口点函数是VC++带有的C运行库要求的入口点。真正的vc程序的入口点函数是在使用VC++的C编译器编译程序时指定的。它可以是符合下面形式的任何名称的函数:
  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” 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值