Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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.