13 Stimmen

warum haben STL-Header-Dateien keine Erweiterung?

Ich habe diese grundlegenden Zweifel. Der STL-Header hat keine .h Erweiterung.

#include <vector>
#include <map>

Gibt es dafür einen bestimmten Grund? Wenn jemand die Geschichte dahinter kennt, bitte mitteilen.

EDIT :

@GMan gefunden Michael Burrs Antwort die sich mit dieser Frage befasst.

12voto

Anders Hansson Punkte 3708
  • Die #include-Direktive unterscheidet nicht zwischen verschiedenen Dateitypen (es handelt sich lediglich um einen glorifizierten Copy-Paste-Vorgang) - es findet kein automatisches Hinzufügen von .h statt.
  • C++-Standard-Header-Dateien werden ohne die Erweiterung .h bereitgestellt
  • Manchmal werden vom Hersteller abwärtskompatible Header-Dateien mit demselben Namen und der Erweiterung .h bereitgestellt

Das hat alles mit Namensräumen zu tun. Die .h-Gegenstücke für C++-Standard-Header enthalten normalerweise #includes des richtigen C++-Standard-Headers (ohne .h-Erweiterung) und geben dann eine Reihe von using aus (etwa so):

DATEI: iostream.h

#include <iostream>

using std::iostream;
using std::ostream;
using std::ios;
...

während die Headerdatei ohne die Erweiterung .h den Namensraum nicht mit allen definierten Klassen und Typen verschmutzt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X