看来我还落后很多啊,得加快速度喽
我以前也对库很感兴趣,花了很多时间研究学习。很多函数都自己写过。
比如非常简单的 string.h 里的东西,初学者基本都会。
math.h 里的东西,比如 sin() 那需要很多数值分析的东西,也花了很多心血学;不过后来才知道 x86 的库是靠个 fsin。
最神秘的说到底还是 stdio.h 为代表的那堆东西,主要是那堆东西和系统交互的多。printf 也许还可以靠写显存做(其实这种方法和 printf 的功能还有一定的区别),但 fopen 有什么方法能搞?其实还有好多问题,比如 main 的参数是怎么传的之类的。
现在学得多了,当然这些问题就不在话下了。不过认识变了,就发现找到的答案和当年想像的相差也比较大了。
不得不说,在我学的所有东西里,我下精力最多的是 C 和 C++,尤其是 C。除了它是实现,还研究了它们的标准(C++ 标准基本就不是给人看的,主题太错综复杂,但中心思想却是能抓住的)。要想理解 C,必须给认为库是 C 语言的一部分。分离它们的想法是偏离 C 语言本质的。
在标准的支持下,C 语言是一种独立的语言,与操作系统无关,C 语言的本质也与它的实现无关。当然 C 语言标准是很人性化的,为 C 编译器的实现者提供了很多关怀。C 语言的标准库,也是 C 的核心库,是 C 运行环境的最小集。实现 C 编译器的最本质工作不是語法识别,而是实现兼容标准的库。
现在标准的化工作,就是扩展这个最小集。一个系统如果支持的 C 运行库不只 C 标准库这么少,而是达到 POSIX(可移植操作系统接口)标准所要求的某个另外的集合。就称这个系统支持某个 POSIX 标准。研究标准最后都会往这个方向转,所以我一般不执著于系统和平台。