Freigeben über


include_alias

Gibt an, dass short_filename als Alias für long_filename verwendet werden soll.

#pragma include_alias( "long_filename", "short_filename" ) 
#pragma include_alias( <long_filename>, <short_filename> )

Hinweise

Einige Dateisysteme unterstützen längere Headerdateinamen als das 8.3-FAT-Dateisystem. Der Compiler kann die längeren Namen nicht einfach bis 8.3 abschneiden, da die ersten acht Zeichen der längeren Headerdateinamen möglicherweise nicht eindeutig sind. Wenn der Compiler auf die Zeichenfolge long_filename trifft, ersetzt er short_filename und sucht nach der Headerdatei short_filename. Dieses Pragma muss vor den entsprechenden #include-Direktiven eingefügt werden. Beispiel:

// First eight characters of these two files not unique.
#pragma include_alias( "AppleSystemHeaderQuickdraw.h", "quickdra.h" )
#pragma include_alias( "AppleSystemHeaderFruit.h", "fruit.h" )

#pragma include_alias( "GraphicsMenu.h", "gramenu.h" )

#include "AppleSystemHeaderQuickdraw.h"
#include "AppleSystemHeaderFruit.h"
#include "GraphicsMenu.h"

Der Alias, nach dem gesucht wird, muss genau der Spezifikation entsprechen. Dies gilt für den Gebrauch von Groß-/Kleinschreibung, Rechtschreibung, doppelten Anführungszeichen und spitzen Klammern. Das Pragma include_alias führt einfache Zeichenfolgenabgleiche von Dateinamen durch; keine weitere Dateinamenvalidierung wird durchgeführt. Zum Beispiel wird bei folgenden Direktiven

#pragma include_alias("mymath.h", "math.h")
#include "./mymath.h"
#include "sys/mymath.h"

kein Aliasing (Ersetzung) ausgeführt, da die Headerdateizeichenfolgen nicht genau übereinstimmen. Die Headerdateinamen, die als Argumente für die /Yu- und /Yc- Compileroptionen verwendet werden, oder das hdrstop-Pragma werden nicht ersetzt. Wenn beispielsweise die Quelldatei die folgenden Direktiven enthält,

#include <AppleSystemHeaderStop.h>

sollte die entsprechende Compileroption Folgendes sein:

/YcAppleSystemHeaderStop.h

Sie können das include_alias-Pragma verwenden, um einen Headerdateinamen einem beliebigen anderen Headerdateinamen zuzuordnen. Beispiel:

#pragma include_alias( "api.h", "c:\version1.0\api.h" )
#pragma include_alias( <stdio.h>, <newstdio.h> )
#include "api.h"
#include <stdio.h>

Mischen Sie die Dateinamen, die in Anführungszeichen eingeschlossen sind, nicht mit den Dateinamen in spitzen Klammern. Beispielsweise führt der Compiler angesichts der beiden oben erwähnten Direktiven #pragma include_alias keinen Ersatz für die nächsten #include-Direktiven aus:

#include <api.h>
#include "stdio.h"

Außerdem generiert die folgende Direktive einen Fehler:

#pragma include_alias(<header.h>, "header.h")  // Error

Beachten Sie, dass der Dateiname, der in Fehlermeldungen oder als Wert des vordefinierten __FILE__-Makros gemeldet wird, der Name der Datei ist, nachdem die Ersetzung ausgeführt wurde. Nach den folgenden Direktiven

#pragma include_alias( "VeryLongFileName.H", "myfile.h" )
#include "VeryLongFileName.H"

erzeugt beispielsweise ein Fehler in VERYLONGFILENAME.H die folgende Fehlermeldung:

myfile.h(15) : error C2059 : syntax error

Beachten Sie außerdem, dass Transitivität nicht unterstützt wird. Im Falle der folgenden Direktiven gilt:

#pragma include_alias( "one.h", "two.h" )
#pragma include_alias( "two.h", "three.h" )
#include "one.h"

Der Compiler sucht die Datei TWO.H. statt THREE.H.

Siehe auch

Referenz

Pragma-Direktiven und das __Pragma-Schlüsselwort