2014-04-22 15 views
5

Ich möchte einen Blick in Namespace Std werfen, aber ich bin nicht in der Lage, die Datei auf meinem Computer zu finden, wo es definiert ist. Ich habe versucht, das zu googeln, aber ich hatte nicht viel Glück.Wo ist Namespace std definiert?

+3

Es gibt * viele * Standard-Bibliothek Header-Dateien, jeder dieser definierten Namen innerhalb der 'std' Namespace. Dies ist keine einzelne Datei, die Sie überprüfen können. – juanchopanza

+0

Ich dachte, um einen Namespace zu definieren, musste man etwas wie 'Namespace name {...}' machen. Das ist nicht etwas, was ich finden werde? – rage

+0

So definieren Sie Namespaces, aber dies geschieht über viele Dateien. – juanchopanza

Antwort

2

Eine Liste aller in namespace std enthaltenen Dinge finden Sie here.

Wenn Sie Visual Studio verwenden, können Sie es lokal finden Sie hier: ~\Microsoft Visual Studio\VC\crt\src

Es gibt auch eine Online-Darstellung here.

HINWEIS: Bearbeiten Sie die src-Dateien erfolgt auf eigene Gefahr, ich würde empfehlen, sie überhaupt nicht zu bearbeiten.

+1

* Wenn * sie tatsächlich installiert haben. – Puppy

1

Viele der Dinge, die im Namespace std implementiert sind, sind templated, was bedeutet, dass ihre gesamte Implementierung in den Header-Dateien sein wird. Zum Beispiel sollte std::vector in der Header-Datei vector sein. Sehen Sie sich einfach die Optionen für Ihren Compiler an, um herauszufinden, wo sich diese Header-Dateien befinden.

Möglicherweise gibt es einige Elternklassen und freistehende Funktionen, die nicht in der Vorlage enthalten sind und die nicht in den Kopfzeilen enthalten sind. Schauen Sie sich die Compiler-Dokumentation an, um zu sehen, ob die Quelldateien irgendwo enthalten sind und wo sie sich befinden.

4

Auf den meisten Unix-Systemen, die C++ Header werden in der Regel in /usr/include/c++/<version>/ gespeichert, wobei <version> die/GCC ist libstdC++ Version (das heißt 4.9 oder 4.9.2) oder auch die libC++ Version heißt v1.

In diesem Verzeichnis befinden sich alle (oder nur die meisten?) Der standardmandatierten Header, die meist nur gewöhnlicher C++ - Code sind. Beachten Sie für libstdC++ insbesondere, dass die meisten der älteren Header nur etwas in bits/ enthalten; einige der C++ 11-spezifischen Header tun dies.

Verwandte Themen