下一代VC运行时库——Universal CRT

前言

其实the Universal CRT(通用C运行时库)已经不能算是“下一代”,因为它已经在前两年伴随着Visual Studio 2015和Windows10发布。但是由于之前使用VS2015开发的应用还较少,关注的人也少,相关的文章更少。所以笔者想干脆用一篇文章,深入浅出的介绍一下Universal CRT。

什么是CRT?

CRT,也就是“C Runtime”,中文译为:C运行时。我们一直称为C Runtime Library(C运行时库)。它主要负责实现C程序在运行时的各种抽象功能实现。不同的C编译器会有不同的具体实现程序,比如Windows下常见的微软的VC编译器的msvcrt.dll;GCC/Glibc的crt0.o、crti.o等。具体到二进制表现形式,可以是动态库,也可以是静态库。

CRT一般会至少负责以下功能:

  • 实现C库函数。比如:printf、fopen等
  • 初始化程序启动所需要的一些功能
  • 异常处理
  • 多线程处理

CRT也可以看成是一个操作系统抽象层。大家都知道,每一种操作系统都有自己的API或者是系统调用。像C语言之所以能够跨平台(代码级),就是因为我只需要用C库函数写程序,CRT会转化为相应平台的具体实现的API来处理。

图片描述

下面我们要着重讨论的是Windows下的开发工具Visual C++配套的CRT,以下将统称为“VC运行时库”。

VC运行时库的历史

图片描述

(注:上表中的划代是作者自己的划代方式)

第一代

我记得我最早学C语言还是上大二(2002年)的时候,那时可是VC的黄金年代。额~~应该说是钻石年代。大家都在学习VC++6.0,一个堪称经典的版本。VC++6.0是为了配合Windows98的应用软件开发而发布的,发布的年代也差不多就是98年前后,所以内部有些文件又称之为VC98。

到这个时候,VC运行时库文件只有一个叫msvcrt.dll的,一般在c:\windows\system32下,大家发行软件产品的时候,基本上不需要考虑是否需要带个什么库࿰

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值