Warum tun wir '# include ‚stdafx.h‘' statt '#include stdafx.h' verwenden?

8

Von hier heißt es:

  

Für # include "filename" sucht der Präprozessor gleich   Verzeichnis als die Datei, die die Direktive enthält. Diese Methode ist   wird normalerweise verwendet, um vom Programmierer definierte Header-Dateien einzuschließen.

     

Für # schließen Sie die Präprozessor-Suche in einer Implementierung ein   abhängige Weise, normalerweise in Suchverzeichnissen, die von der   Compiler / IDE. Diese Methode wird normalerweise verwendet, um die Standardbibliothek einzuschließen   Header-Dateien.

Während dieser Wiki-Link darauf hinweist, dass stdafx.h eine Header-Datei ist, die von% co_de vordefiniert wurde %

  

stdafx.h ist eine Datei, die von Microsoft Visual Studio IDE-Assistenten generiert wird.   Dies beschreibt sowohl Standardsystem- als auch projektspezifische Include-Dateien   die häufig verwendet werden, sich aber kaum ändern.

     

Kompatible Compiler (zum Beispiel Visual C ++ 6.0 und neuer)   Diese Datei vorkompilieren, um die Gesamtkompilierzeit zu reduzieren. Visual C ++ wird   Kompilieren Sie nichts vor dem # include "stdafx.h" in der Quelle   Datei, es sei denn, die Kompilieroption /Yu'stdafx.h 'ist deaktiviert (durch   Standard); es nimmt den gesamten Code in der Quelle bis einschließlich auf   Zeile ist bereits kompiliert.

     

Der AFX in stdafx.h steht für Application Framework eXtensions. AFX   war die ursprüngliche Abkürzung für die Microsoft Foundation Classes   (MFC). Während der Name stdafx.h standardmäßig verwendet wird, können Projekte   Geben Sie einen alternativen Namen an.

Dann

Warum verwenden wir #include visual studio IDE anstelle von "stdafx.h" ?

    
sepideh 16.05.2016, 15:36
quelle

3 Antworten

8

Ein stdafx.h , stdafx.cpp -Paar wird von VS aus einer Vorlage generiert. Es befindet sich in demselben Verzeichnis, in dem der Rest der Dateien endet. Sie werden es wahrscheinlich am Ende für Ihr Projekt ändern. Daher verwenden wir "" anstelle von <> genau aus dem Grund, dass es im selben Verzeichnis liegt wie das erste Zitat.

    
Crazy Eddie 16.05.2016, 15:39
quelle
4

Weil stdafx.h für jedes Projekt unterschiedlich ist. Wie Sie angegeben haben, sucht #include "" den Pfad des aktuellen Projekts, und hier befindet sich stdafx.h .

Die Verwendung von #include <stdafx.h> wäre ein großer Fehler, weil er sich im Bibliothekspfad befinden müsste (wo sich alle Header der Standardbibliothek befinden). Dies würde bedeuten, dass Sie es nicht ändern sollten oder dass es immer gleich bleibt, aber es ist nie das gleiche für verschiedene Projekte.

Obwohl es von Visual Studio generiert wird, ist es also projektspezifisch und nicht für alle Projekte.

    
Rakete1111 16.05.2016 15:41
quelle
0

Im Allgemeinen ist die Syntax #include <name> für eine gegebene Include-Datei name.h reserviert für die Standardbibliotheken , während #include "name.h" für benutzerdefinierte Dateien verwendet wird. Dort könnte "Benutzer" jeden Entwickler bedeuten, der nicht standardmäßige Funktionen implementiert, etwa für ein bestimmtes Compiler-Paket.

Dementsprechend sucht der Präprozessor nach den Include-Dateien, die den geeigneten Pfaden folgen, die durch die Systemeinstellungen vorgegeben sind. Beachten Sie nicht nur den Unterschied zwischen Klammern und Anführungszeichen, sondern auch die unterschiedliche Verwendung der Erweiterung * .h.

    
XavierStuvw 28.03.2018 14:43
quelle