Как реализации стандартных функций заголовочных файлов библиотеки написаны на c ++? - PullRequest
3 голосов
/ 06 июня 2019

Я знаю, что в C ++ есть стандартная библиотека, которая состоит из заголовочных файлов, которые состоят из прототипов функций, но где их реализации? Я имею в виду, я хочу увидеть, как cout << "hey"; действительно работает. Как пишутся реализации встроенных функций? в сборке?

1 Ответ

4 голосов
/ 06 июня 2019

Бремя реализации стандартной библиотеки C ++ может быть выполнено любым образом, при условии соблюдения спецификации. Другими словами, если вы #include требуемый заголовок, тогда вы получите нужную функцию.

Многое из этого действительно написано на C ++, и вы можете просматривать код с помощью построчного отладчика, если ваш набор инструментов компилятора поставляется с исходным кодом стандартной библиотеки. Одна проблема с чтением стандартного библиотечного кода заключается в том, что любая переменная должна быть такой, которая не может быть #define d в качестве макроса программистом. Именно поэтому имена переменных имеют префикс __ или _, за которым следует заглавная буква.

Некоторые из этих C ++ могут иметь конструкции, которые являются непереносимыми, поскольку реализация стандартной библиотеки C ++ обычно привязана к компилятору. Действительно, некоторые функции (например, std::malloc) не могут быть написаны на стандартном C ++!

Некоторые компоненты библиотеки могут быть написаны на ассемблере (например, std::strlen) или, возможно, даже жестко запрограммированы в самом компиляторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...