Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anger att när alias_filename hittas i ett #include
direktiv ersätter kompilatorn actual_filename i dess ställe.
Syntax
#pragma include_alias(
alias_filename,
actual_filename)
#pragma include_alias(
< alias_filename>,
<actual_filename>)
Anmärkningar
Med include_alias
pragma-direktivet kan du ersätta filer med olika namn eller sökvägar för filnamnen som ingår i källfilerna. Vissa filsystem tillåter till exempel längre rubrikfilnamn än 8.3 FAT-filsystemgränsen. Kompilatorn kan inte bara trunkera de längre namnen till 8.3, eftersom de första åtta tecknen i de längre rubrikfilnamnen kanske inte är unika. När kompilatorn ser alias_filename strängen i ett #include
-direktiv ersätter den namnet actual_filename i stället. Sedan läses actual_filename-huvudfilen in. Denna pragma måste visas före motsvarande #include
direktiv. Till exempel:
// 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"
Aliaset som ska sökas efter måste matcha specifikationen exakt. Skiftläge, stavning och användning av dubbla citattecken eller vinkelparenteser måste alla matcha. Den include_alias
pragma gör enkel strängmatchning på filnamnen. Ingen annan validering av filnamn utförs. Med tanke på följande direktiv är det till exempel
#pragma include_alias("mymath.h", "math.h")
#include "./mymath.h"
#include "sys/mymath.h"
ingen aliasersättning görs eftersom huvudfilsträngarna inte matchar exakt. Huvudfilnamn som används som argument för /Yu
och /Yc
kompilatoralternativ, eller hdrstop
pragma, ersätts inte. Om källfilen till exempel innehåller följande direktiv,
#include <AppleSystemHeaderStop.h>
motsvarande kompilatoralternativ bör vara
/YcAppleSystemHeaderStop.h
Du kan använda include_alias
pragma för att mappa valfritt huvudfilnamn till ett annat. Till exempel:
#pragma include_alias( "api.h", "c:\version1.0\api.h" )
#pragma include_alias( <stdio.h>, <newstdio.h> )
#include "api.h"
#include <stdio.h>
Blanda inte filnamn som omges av dubbla citattecken med filnamn inom vinkelparenteser. Med tanke på ovanstående två #pragma include_alias
direktiv ersätter kompilatorn till exempel inte följande #include
direktiv:
#include <api.h>
#include "stdio.h"
Dessutom genererar följande direktiv ett fel:
#pragma include_alias(<header.h>, "header.h") // Error
Filnamnet som rapporteras i felmeddelanden, eller som värdet för det fördefinierade __FILE__
makrot, är namnet på filen när ersättningen är klar. Se till exempel utdata efter följande direktiv:
#pragma include_alias( "VERYLONGFILENAME.H", "myfile.h" )
#include "VERYLONGFILENAME.H"
Ett fel i VERYLONGFILENAME.H
genererar följande felmeddelande:
myfile.h(15) : error C2059 : syntax error
Observera också att transitivitet inte stöds. Med hänsyn till följande direktiv
#pragma include_alias( "one.h", "two.h" )
#pragma include_alias( "two.h", "three.h" )
#include "one.h"
kompilatorn söker efter filen two.h
i stället för three.h
.