2010-01-05 10 views
23

Возможно ли получить исходный код стандартной библиотеки C++?Где получить исходный код стандартной библиотеки C++

+11

Имейте в виду, что вы вводите в заблуждение себя, говоря «* исходный код». Язык C++ описывается только стандартом, как и поведение стандартной библиотеки. То, что вы можете найти, - это * единственная реализация * стандартной библиотеки, а не * *. – GManNickG

+0

@GManNickG: Кроме того, он, по крайней мере, частично встроен в сам компилятор. На самом деле вовсе не обязательно иметь какой-либо отдельный код. –

ответ

15

Проект GNU является бесплатным и открытым исходным кодом и содержит реализацию стандартной библиотеки C++.

http://gcc.gnu.org/libstdc++/

+0

Я следил за ссылкой на http: //mirror.clarkson.edu/gnu/...до сих пор не знаю, какой из них стандартный C++ lib – Southsouth

+0

Действительно? Любой из tarballs здесь должен извлечь в стандартный источник C++ lib: http://mirror.clarkson.edu/gnu/libstdc++/ –

+0

, если у вас установлен git, попробуйте это git init git remote add origin git: // gcc .gnu.org/git/gcc.git git config --add remote.origin.fetch 'refs/remotes/*: refs/remotes/svn/*' git fetch git checkout -b trunk svn/trunk –

14

Если у вас есть Visual Studio Professional, то есть исходный код в

X:\Microsoft Visual Studio 9.0\VC\crt\src

10

Вы уже должны иметь источники в вашей установке компилятора. Если вы используете IDE с командой «перейти к включению файла», выберите любой заголовок STL и перейдите к нему. Если вы используете какой-то UNIX, посмотрите в /usr/include/c++. Смотрите, где этот заголовок STL включает другие заголовки и рекурсию: v).

+2

'/ usr/lib/gcc/$ CTARGET/$ VERSION/include/g ++ - v4 /' на моей стандартной системе Linux. – ephemient

+2

Huh, справочная страница GCC, похоже, указывает, что это более вероятное местоположение, но в стандартной ОС X есть только несколько случайных вещей низкого уровня (без STL). Возможно, «найти iostream» - хорошее решение. – Potatoswatter

1

В Visual Studio, если вы интересуетесь конкретной (специфической) реализацией STL-элемента (например, любой функцией), щелкните правой кнопкой мыши по ее упоминанию в коде и выберите «Перейти к определению» в контекстном меню. (Или установите курсор на этом упоминании и нажмите «F12»)

5

libc++ is the C++ Standard Library of LLVM.

Весь код в LIBC++ двойственна под лицензией MIT и лицензии UIUC (а BSD-подобные лицензии).

  • Правильность, определенная стандартом C++ 11.
  • Быстрое исполнение.
  • Минимальная память.
  • Быстрое время компиляции.
  • ABI совместимость с libstdC++ gcc для некоторых низкоуровневых функций, таких как объекты исключений, rtti и распределение памяти.
  • Обширные модульные испытания.
Смежные вопросы