先声明,只是我自己看了一些东东的想法。

因为以前这一套东东太缠绕人了。

C语言,是一种语言标准,和它对照的是C++,JAVA,BASIC,FORTRAN,PASCAL等等概念。它定义的是自己一套适用于计算机的标准规范。如关键字,数据类型,表达式,语句结构等等,它不包含强制具体的实现,没有强制INT数据类型的长度一定是4等。这种具体而微的定义,一般是各编译器厂商实现的。所以,那本经典的二人合著本的C教材第二版,其实很薄。真正C语言标准的内容,不多。

编译器和标准库,其实是不同的厂商依据C语言标准的具体实现。就像马克思指出了共产主义的大约标准样子,而老毛试图来实现。GCC,TURBO,MICROSOFT(有什么是它不作的么??),编译器将程序编译,链接后形成可执行文件或库文件(静态,动态的)。其实,我感觉,编译器也不一定非要搞成一个汇编代码,只是为了方便调试。所以一般会先生成汇编代码再生成O中间目标文件。

而各个编译厂家一般都会带一套标准库,用于程序开发。标准库的标准,也有不同说明,POSIX,ISO等等,这个库是最难说清楚的。而我最个人的理解就是:其实标准库只是定义一套在计算机上实现的功能,它不和具体操作系统耦合,保证了超标准和可移植性。标准不但针对应用程序开发,也针对操作系统开发。就像LINUS写LINUX时,也遵从了POSIX的标准。如果微软的CRT只适合微软,那也就失去了通用性了。因为计算机毕竟并不是微软的代名词。这里有个很有趣的现像。在中国,很大比例的电脑用户眼中,电脑就是WINDOWS。WINDOWS是好,但微软独裁就不好,刻意打压对手就不好。我们也不像以前一样,像个P民一样刻意的相信上层管理者是个自觉的管理 者,管理者是不需要约束的。总之,宁愿受两只狼的管理,也不愿受一只羊的管理。其中人性,冷暖自知。。。扯完了,零乱了。

标准库,就和GLIBC,CRT之类的扯上了。

至于API,(API并不专指WINDOWS,MFC才专指微软,就像SQL就不就是MS SQL一样)。是具体的操作系统为用户提供的开发接口。它是真正存在而只服务操作系统而不服务于标准的。那么,如何保证标准C程序的可移植性呢?就在API上再包装一下。FOPEN,FCLOSE之类的。。真是一个尴尬的情形。人们通过C标准库功能实现了操作系统,操作系统要反为实现C标准库功能再来封装API。系统调用。。。

最近,又迷上了BIOS中断向量表和中断服务程序的实现,,一直没有好的入门。。。GDT,LDT,,,XXXXX,这个电脑世界神秘了。。我想在自己心里作一下马克思-韦伯说的“除魅”工作了。。。

《禅与摩托车修理艺术》,也快到手啦。。。

强烈推荐此URL,理清了程序界的一些大事。。。

C Runtime Library来历, API, MFC, ATL关系

http://www.cnblogs.com/chio/archive/2007/11/26/972152.html

以下转载其它网络介绍。

目录

  • C/C++      标准库与运行时库 | C/C++      Standard & Runtime Library
  • 模式复用与基础功能      | Pattern Reuse & Basic Function
  • 字符串处理      | String Handling
  • 应用框架与图形用户界面 | Application      Framework & GUI
  • 通用功能      | General Function
  • 线程      | Threads
  • 科学与并行计算 | Scientific & Parallel Computation
  • 网络功能      | Network Communication
  • XML      功能 | XML Functions
  • 持久存储 | Persistence & Storage
  • 加解密      | Cryptographic
  • 日志      | Logging
  • 函数式编程 | Functional Programming
  • 杂项      | MISC

-------------------------------------------
C/C++ 标准库与运行时库 | C/C++ Standard & Runtime Library

实现 ISO 的 C/C++ 语言规格标准中要求的标准库,每个组织或厂家的实现均有差异。在链接的二进制库中通常还伴随实现了平台特定的基础运行时库,例如 POSIX 标准。
ISO C/C++/POSIX 的标准如下:

  • C99: ISO/IEC 9899-1999 (C Programming languages)
  • C++2003: ISO/IEC 14882-2003 (C++ Programming languages)
  • C++0x: ISO/IEC FCD 14882 (C++ Programming languages):第 3 版的 C++ 语言标准。关注发布页上的 Status 是否还是 Under      development。
  • POSIX Interface: ISO_IEC 9945-2-2003 (POSIX - Part 2: System Interfaces)

Microsoft C Run-Time Libraries & Standard C++ Library

  • MSDN Run-Time Library Reference
  • MSDN C Run-Time Libraries:讨论 Microsoft CRT、Standard C++      Library 对应的 lib 和 dll 文件。
  • MSDN Standard C++ Library Reference:微软的标准 C++ 库参考,包括 STL 子集的参考。
  • MSDN STL/CLR Library Reference:从 VC9 开始,微软的 STL 分为两种实现,一种是传统的 C++ 本地代码实现,另一种是托管 C++ 的 CLR 实现,称为 STL/CLR 库。这里是 STL/CLR 库的参考。
  • What Every Computer Programmer Should Know AboutWindows API, CRT, and the Standard C++ Library, by      Alex Blekhman:讲述Windows API、Microsoft CRT、Standard C++      Library 之间的关系,以及运行库的 Unicode、字符集编码问题,静态与动态链接问题。

微软的这一套运行时库,在功能和链接库上分为 3 个部分:Run-Time Libraries (CRT)、Standard C++ Library、CRT for Managed Code,分别对应的动态链接库为:msvcr[ver].dll、msvcp[ver].dll、msvcm[ver].dll。
VC8、VC9 采用了 Side-by-Side (WinSxS, Manifest) 方式部署 CRT 库,但在 VC10 中又去掉了 Side-by-Side 的部署方式。在 %SystemRoot%\system32 中有一个随 Windows 发布的 Known DLL:msvcrt.dll;而带版本号 [ver] 的库在 VC 或 VC Redistributable Package 中发布。
VC7 之后在 namespace stdext 中提供 hash_map、hash_set 两个扩展标准的容器模板。
GNU C/C++ Library

  • GNU C Library
  • Glibc 2 HOWTO 中文版
  • The GNU      C Library Manual
  • GNU C++ Library:libstdc++ 在 GCC Collection 中发布。
  • The GNU      C++ Library Documentation

通常称为 GNU libc 和 libstdc++,是 GNU 的 C/C++ 标准库和运行时库的实现,在各种 Linux 发行版中都会安装该库,也是很多开源 C/C++ 程序选择的基础库。另外 libc 和 libstdc++ 也被移植到各种平台下,如 Windows 下的 MinGW 和 Cygwin 就包含 libc 和 libstdc++:
MinGW

  • MinGW Home
  • MinGW      Sourceforge Project

MinGW: Minimalist GNU for Windows,在 Windows 平台提供一套 GNU 的开发环境,包括工具和开发库。MinGW 中包括对 GCC 和 GNU libc、libstdc++ 的 Windows 移植。
Cygwin

  • Cygwin Home

发源于 RedHat 的 Cygwin 项目,目标在于在 Windows 下建立一套 Unix/Linux 环境,包括 X Window 这种 Linux GUI 基础库在内,所以又叫 Cygwin/X。Cygwin 实现的重点是 cygwin1.dll,它向其它 Cygwin 程序提供 POSIX 接口,并在内部转换成 Windows API 调用。Cygwin 中包括对 GCC 和 GNU libc、libstdc++ 的 Windows 移植。

我自己关于C语言,编译器,标准库,GUN glibc,CRT ,API之类的理解。相关推荐

  1. 【Go语言实战】13. Go语言context标准库(下)

    13. Go语言context标准库(下) 1. API函数 2. 辅助函数 3. context的用法 4. 使用context传递数据真的那么好吗? 参考资料 接着上一届,我们继续学习Go语言的C ...

  2. log包在Golang语言的标准库中是怎么使用的?

    Golang 语言的标准库中提供了一个简单的 log 日志包,它不仅提供了很多函数,还定义了一个包含很多方法的类型 Logger.但是它也有缺点,比如不支持区分日志级别,不支持日志文件切割等. 01. ...

  3. 常见15个C语言的标准库

    C语言的标准库包括15个部分,每一个部分都有一个头描述.标准头主要由函数原型.类型定义以及宏定义组成.如果使用了标准库中的函数,就要将相应的标准头使用#include包含进来. 标准头名 功能 描述 ...

  4. C/C++——C语言标准、C语言标准库、 C标准库实现glibc, uClibc, Elibc

    C语言标准 C语言作为一种常用的计算机开发语言,被用于各种领域,尤其是单片机与嵌入式的开发,在现阶段更有着无可替代的作用,我也经常会使用C语言进行各种开发,使用过程中我们经常会听说 GUN C .AN ...

  5. python语言的标准库有哪些,python标准库函数有哪些

    PyFlux库函数是什么? PyFlux是Python编程语言的开源时间序列库.PyFlux是Python中为处理时间序列问题而创建的开源库. 该库有一系列极好的时间序列模型,包括但不限于 ARIMA ...

  6. 【C语言】标准库(头文件、静态库、动态库),windows与Linux平台下的常用C语言标准库

    一.Introduction 1.1 C语言标准库 1.2 历代C语言标准 1.3 主流C语言编译器 二.C语言标准库 2.1 常用标准头文件 2.2 常用标准静态库 三.windows平台 四.Li ...

  7. Go语言常用标准库——log、net_http、strconv、time包

    文章目录 log 使用Logger 配置logger 标准logger的配置 flag选项 配置日志前缀 配置日志输出位置 创建logger 总结 net_http net/http介绍 HTTP协议 ...

  8. Hello Go(十六)、Go语言常用标准库六

    一.json 1.json简介 Go的标准包encoding/json对JSON的编解码提供了完整的支持. 2.编码 在编码过程中,json包会将Go的类型转换为JSON类型,转换规则如下: bool ...

  9. C语言、C标准库、glibc、Linux内核 之间的关系

    首先 C 是一门语言,包含了一些规定的语法和结构,但并没有包含到我们平常所用的函数,如 printf() 和 scanf(),这些只是由 C 标准库所提供的.之所以存在 C 标准库,是因为这些已经编好 ...

最新文章

  1. hbase java api 两种方式
  2. RHEL7OSP-6.0的openstack云主机发放
  3. 论文辅助笔记(代码实现):Bayesian Probabilistic Matrix Factorizationusing Markov Chain Monte Carlo
  4. 二阶系统响应指标图_15. 闭环系统的频域性能指标
  5. 【机器学习】全面解析Kmeans聚类算法(Python)
  6. centos 安装 acrobat Reader之后
  7. 同一机器部署多个JVM
  8. 小程序是否转发群还是个人(转发功能)
  9. webstrom html校验css语法,webstorm ECMAScript 6 语法检查
  10. 数据仓库系列之元数据管理
  11. 计算机有自带的编程软件吗,cmd打开电脑自带软件
  12. iOS不能显示英文音标问题
  13. 有道云笔记迁移至语雀终极解决方案
  14. 大风车音乐计算机,大风车歌曲
  15. 计算机专业毕业论文选哪方面,计算机专业毕业论文格式有哪些要求
  16. 5G时代,玖玖星球云算链引领VR技术踏上新台阶
  17. 懂车帝:2018汽车行业大数据报告(附下载)
  18. 二,ES6中新增const关键字的使用方法
  19. gazebo添加末端六维力传感器
  20. Python遥感可视化 — Basemap作Albers投影

热门文章

  1. cadence 常见pcb电阻_高速PCB培训手记
  2. ping端口怎么ping_英雄联盟手游ping信号怎么发送 ping信号发送方法介绍_游戏攻略...
  3. linux centos7杀进程,centos7 nginx 启动/进程状态/杀掉进程
  4. prop在java中_jquery中attr和prop的区别
  5. Python __all__的作用
  6. Python案例:通过城市区域代码查询天气
  7. 列表视图案例1——阅读古诗
  8. 9.广义霍夫变换——广义霍夫变换算法和识别中的应用、现在的霍夫算法及识别中的应用_2
  9. 14.图像透视——投影几何性质,平行线(Parallel Lines),消失点(Vanishing Point)_3
  10. 2017.8.8 loli测试