Standard C ++ knihovny hlavičky na GNU gcc místě

hlasů
1

Chci procházet zdrojového kódu GNU implementace Standard C ++ knihovny - hlavičkové soubory, jakož i provádění. Jsem přistál jsem se do:

http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/index.html

Mým prvním krokem bylo dívat hlavičkový soubor na adrese:

http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/a01376.html

Moje otázka je, že dle mého chápání typedeffed řetězec tá jako: typedef basic_string řetězec; by měly být přítomny v záhlaví řetězce, ale nevidím jej zde.

Otázky: --in, který soubor je definice řetězce symbol? --I vidět, že záhlaví souboru řetězec obsahuje hodně mnoho záhlaví a je-li typedeffed symbol sring je definován v jednom z těchto interních hlaviček, je tam hledat bar něco na těchto stránkách přes které mohu dosáhnout na definici symbolu hned. (V případě, že již někdo procházet věci z této stránky dříve)

Díky, Jagrati

Položena 03/07/2010 v 13:49
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
4

Mnoho libstdc ++ je realizována pouze hlavičky, ale některé části STK, stejně jako std::basic_string, které sestavují implementace.

Deklarace šablony std::basic_stringse nachází v /usr/include/c++/4.4.4/bits/basic_string.h(nahradit ‚4.4.4‘ s g++ -dumpversion) a implementace je /usr/include/c++/4.4.4/bits/basic_string.tcc. Skutečná typedefof std::string, std::wstringatd je .../bits/stringfwd.h. Máte-li potřeba vytvořit instanci std::basic_strings ostatními parametry šablon, například, pak se něco takového:

#include <bits/basic_string.tcc>

template class std::basic_string<long>;

Způsob, jakým libstdc ++ implementuje sad a map (header-only) je docela zajímavé, ale také velmi složitý, protože používá implementaci vlastního červeno-černý strom ( _Rb_tree).

Libstdc ++ implementace std::vector(také header-only) je soběstačný, takže to stojí za pohled do /usr/include/c++/4.4.4/bits/stl_vector.hdát vám představu o internals libstdc ++. Další zajímavý soubor .../bits/stl_algo.h, který obsahuje definice STL algoritmy.

Poznámka: V systému Windows s MinGW, najdete na libstdc ++ záhlaví ve lib\gcc\mingw32\4.4.0\include\c++\bitsvaší instalace MinGW, nahradí ‚4.4.0‘ se g++ -dumpversion.

Odpovězeno 03/07/2010 v 14:03
zdroj uživatelem

hlasů
1

Rychlý grep mi řekl, že typedef basic_string<char> stringje bits/stringfwd.h. Já používám gcc 4.5.0.

Odpovězeno 03/07/2010 v 14:03
zdroj uživatelem

hlasů
1

Můžete najít, co potřebujete přímo v /usr/include/c++: jelikož standardní knihovna značka se skládá ze šablon, většina kódu je to umístěno přímo v hlavičkových souborech.

Také jsem se snažil jim kdysi četl, ale věřte mi: nechcete dělat. :) Vážně, je to trochu chaotický.

Odpovězeno 03/07/2010 v 13:53
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more