Delen via


include_alias pragma

Geeft aan dat wanneer alias_filename in een #include instructie wordt gevonden, de compiler actual_filename vervangt.

Syntaxis

#pragma include_alias( "alias_filename" , "actual_filename" )
#pragma include_alias( < alias_filename>,<actual_filename>)

Opmerkingen

Met de include_aliaspragma instructie kunt u bestanden vervangen die verschillende namen of paden hebben voor de bestandsnamen die zijn opgenomen in bronbestanden. In sommige bestandssystemen zijn bijvoorbeeld langere bestandsnamen van headers toegestaan dan de limiet van het 8.3 FAT-bestandssysteem. De compiler kan niet alleen de langere namen afkappen op 8.3, omdat de eerste acht tekens van de langere headerbestandsnamen mogelijk niet uniek zijn. Wanneer de compiler de alias_filename tekenreeks in een #include instructie ziet, wordt in plaats daarvan de naam actual_filename vervangen. Vervolgens wordt het actual_filename headerbestand geladen. Deze pragma moet worden weergegeven vóór de bijbehorende #include richtlijnen. Bijvoorbeeld:

// 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"

De alias die moet worden gezocht, moet exact overeenkomen met de specificatie. Het hoofdlettergebruik, de spelling en het gebruik van dubbele aanhalingstekens of punthaken moeten allemaal overeenkomen. De include_aliaspragma maakt eenvoudige tekenreeksen die overeenkomen met de bestandsnamen. Er wordt geen andere bestandsnaamvalidatie uitgevoerd. Bijvoorbeeld, gezien de volgende instructies,

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

er wordt geen alias vervangen, omdat de tekenreeksen van het headerbestand niet exact overeenkomen. Ook worden headerbestandsnamen die worden gebruikt als argumenten voor de /Yu- en /Yc compileropties, of de hdrstoppragma, niet vervangen. Als uw bronbestand bijvoorbeeld de volgende instructie bevat,

#include <AppleSystemHeaderStop.h>

de bijbehorende compileroptie moet zijn

/YcAppleSystemHeaderStop.h

U kunt de include_aliaspragma gebruiken om elke bestandsnaam van de koptekst toe te wijzen aan een andere. Bijvoorbeeld:

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

Meng geen bestandsnamen tussen dubbele aanhalingstekens met bestandsnamen tussen punthaken. Op basis van de bovenstaande twee #pragma include_alias-instructies wordt de compiler bijvoorbeeld niet vervangen door de volgende #include-instructies:

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

Bovendien genereert de volgende richtlijn een fout:

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

De bestandsnaam die wordt gerapporteerd in foutberichten of als de waarde van de vooraf gedefinieerde __FILE__ macro, is de naam van het bestand nadat de vervanging is uitgevoerd. Zie bijvoorbeeld de uitvoer na de volgende instructies:

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

Een fout in VERYLONGFILENAME.H produceert het volgende foutbericht:

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

Houd er ook rekening mee dat transitiviteit niet wordt ondersteund. Gezien de volgende richtlijnen,

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

de compiler zoekt naar het bestand two.h in plaats van three.h.

Zie ook

Pragma-instructies en de __pragma en _Pragma trefwoorden