编写C和C++标准库的语言是什么?

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++编写.

  • 有些asm是强制性的,不仅仅是为了提高性能.例如,无法在C中编写`setjmp`. (3认同)

Mic*_*yan 6

标准库通常用C和C++编写,使用最少的汇编代码与操作系统提供的功能进行交互,大多数操作系统都是用C语言编写的,也可以是少数几个组合的汇编语言库.在C中无法直接完成的事情.

一个更具体的例子......

对于GNU/Linux,标准库是用C和C++编写的.对于需要使用内核的各种事情,最终会调用syscall,它提供了跳入内核所需的一小部分汇编代码,其中以C和汇编混合编写的代码处理调用.


Alo*_*ave 5

它们是用主机语言编写的,原因很简单,它们需要与操作系统交互以执行它们自己无法完成的操作,他们会使用操作系统提供的API来实现.

C++标准库是用C++编写的,因为它的大多数实现都使用模板.


tru*_*ity 5

这里有一个小小的误解:编译器负责将C或C ++(或其他任何东西)翻译成机器代码。库本身可以用C编写,这没有问题。而且,只要存在至少一个C编译器来编译它,甚至编译器本身也可以用C编写。(一个大笑话是要在Linux上“正确”安装gcc,您需要gcc从源代码进行编译。)

您可能会问“第一个编写的C编译器是什么”。

  • @alecwhardy:http://www.quora.com/What-language-was-the-first-C-compiler-written-in (2认同)