ale*_*rdy 21 c c++ assembly standard-library
C和C++本身实际上无法做任何事情,它们需要库来工作.那么图书馆是如何创建的?汇编语言?
Jon*_*ood 51
C和C++库几乎普遍用C和C++编写,C和C++编译器也是如此.事实上,许多编译器甚至用于编译自己!
这怎么可能?好吧,显然第一个C编译器最初不能用C开发.但是,一旦存在C编译器,它就可以用来编译另一个编译器.正在开发编译器,源代码也是如此.它可以并排发展.由于大多数编译器都是对其前辈的改进,因此它们通常用于编译自己的更好版本!
但是,就库而言,这很容易:C 实际上可以做一些事情.虽然一些低级例程可以用汇编语言编写,但绝大多数例程可以用C或C++编写.
它们是用主机语言编写的,原因很简单,它们需要与操作系统交互以执行它们自己无法完成的操作,他们会使用操作系统提供的API来实现.
C++标准库是用C++编写的,因为它的大多数实现都使用模板.
这里有一个小小的误解:编译器负责将C或C ++(或其他任何东西)翻译成机器代码。库本身可以用C编写,这没有问题。而且,只要存在至少一个C编译器来编译它,甚至编译器本身也可以用C编写。(一个大笑话是要在Linux上“正确”安装gcc,您需要gcc从源代码进行编译。)
您可能会问“第一个编写的C编译器是什么”。