Unterschied zwischen spitzen Klammern und doppelten Anführungszeichen “”, wenn Headerdateien in C ++ eingeschlossen sind?

Mögliche Duplikate:
Was ist der Unterschied zwischen #include und #include “filename”?

Was ist der Unterschied zwischen der spitzen Klammer und doppelten Anführungszeichen " " wenn Header-Dateien in C ++ eingeschlossen sind?

Ich meine, welche Dateien sollen mit einbezogen werden zB: #include und welche Dateien sollen mit einbezogen werden zB: #include "MyFile.h" ???

Solutions Collecting From Web of "Unterschied zwischen spitzen Klammern und doppelten Anführungszeichen “”, wenn Headerdateien in C ++ eingeschlossen sind?"

Es ist Compiler abhängig. Das heißt, im Allgemeinen verwendet " priorities headers im aktuellen Arbeitsverzeichnis über Systemheaders. <> Wird normalerweise für Systemheader verwendet. Von der Spezifikation (Abschnitt 6.10.2):

Eine Vorverarbeitungsanweisung des Formulars

  # include  new-line 

Durchsucht eine Folge von implementierungsdefinierten Positionen nach einem Header, der durch die angegebene Sequenz eindeutig zwischen den Begrenzern < und > , und bewirkt, dass diese Direktive durch den gesamten Inhalt des Headers ersetzt wird. Wie die Orte angegeben werden oder der Header identifiziert wird, ist implementierungsdefiniert.

Eine Vorverarbeitungsanweisung des Formulars

  # include "q-char-sequence" new-line 

bewirkt die Ersetzung dieser statement durch den gesamten Inhalt der Quelldatei, die durch die angegebene Sequenz zwischen den " Trennzeichen " identifiziert wird. Die benannte Quelldatei wird in einer implementierungsdefinierten Weise gesucht. Wenn diese Suche nicht unterstützt wird oder die Suche fehlschlägt Die Richtlinie wird so aufbereitet, als ob sie gelesen würde

  # include  new-line 

mit der identischen enthaltenen Sequenz (einschließlich > Zeichen, falls vorhanden) von der ursprünglichen statement.

Bei den meisten Compilern wird mit dem "" zuerst das lokale Verzeichnis überprüft, und wenn keine Übereinstimmung gefunden wird, werden die Systempfade überprüft. Mit <> die Suche mit Systemheadern gestartet.

Wenn Sie spitze Klammern verwenden, sucht der Compiler in der Include-Pfadliste nach der Datei. Wenn Sie doppelte Anführungszeichen verwenden, durchsucht es zuerst das aktuelle Verzeichnis (dh das Verzeichnis, in dem das Modul kompiliert wird) und nur dann wird es die Include-Pfadliste durchsuchen.

Konventionell verwenden Sie die spitzen Klammern für Standard-Includes und die doppelten Anführungszeichen für alles andere. Dies stellt sicher, dass in dem (nicht empfohlenen) Fall, in dem Sie einen lokalen Header mit dem gleichen Namen wie ein Standard-Header haben, der jeweils richtige ausgewählt wird.