Бремя реализации стандартной библиотеки C ++ может быть выполнено любым образом, при условии соблюдения спецификации. Другими словами, если вы #include
требуемый заголовок, тогда вы получите нужную функцию.
Многое из этого действительно написано на C ++, и вы можете просматривать код с помощью построчного отладчика, если ваш набор инструментов компилятора поставляется с исходным кодом стандартной библиотеки. Одна проблема с чтением стандартного библиотечного кода заключается в том, что любая переменная должна быть такой, которая не может быть #define
d в качестве макроса программистом. Именно поэтому имена переменных имеют префикс __
или _
, за которым следует заглавная буква.
Некоторые из этих C ++ могут иметь конструкции, которые являются непереносимыми, поскольку реализация стандартной библиотеки C ++ обычно привязана к компилятору. Действительно, некоторые функции (например, std::malloc
) не могут быть написаны на стандартном C ++!
Некоторые компоненты библиотеки могут быть написаны на ассемблере (например, std::strlen
) или, возможно, даже жестко запрограммированы в самом компиляторе.