include_alias pragma

Megadja, hogy ha alias_filename található egy #include irányelvben, a fordító helyettesítse a helyén actual_filename.

Szintaxis

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

Megjegyzések

A include_aliaspragma irányelv lehetővé teszi olyan fájlok helyettesítését, amelyek különböző neveket vagy elérési utakat használnak a forrásfájlok által tartalmazott fájlnevekhez. Egyes fájlrendszerek például a 8,3 FAT fájlrendszerkorlátnál hosszabb fejlécfájlneveket engedélyeznek. A fordító nem tudja egyszerűen 8.3-ra állítani a hosszabb neveket, mert előfordulhat, hogy a hosszabb fejlécfájlnevek első nyolc karaktere nem egyedi. Amikor a fordító egy #include-irányelvben látja a alias_filename sztringet, helyette a actual_filename nevet helyettesíti. Ezután betölti a actual_filename fejlécfájlt. Ennek a pragma a megfelelő #include irányelvek előtt kell megjelennie. Például:

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

A keresendő aliasnak pontosan meg kell egyeznie a specifikációval. A kis- és nagybetűknek, a helyesírásnak és a kettős idézőjelek vagy szögletes zárójelek használatának egyeznie kell. A include_aliaspragma egyszerű karakterlánc-egyeztetést végez a fájlneveken. Nincs más fájlnév-ellenőrzés. Például a következő irányelveket figyelembe véve:

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

nem történik alias-helyettesítés, mivel a fejlécfájl sztringjei nem egyeznek pontosan. Emellett a /Yu és /Yc fordítóbeállítások argumentumaként használt fejlécfájlnevek, illetve a hdrstoppragmanem helyettesíthetők. Ha például a forrásfájl a következő irányelvet tartalmazza,

#include <AppleSystemHeaderStop.h>

a megfelelő fordítóbeállításnak

/YcAppleSystemHeaderStop.h

A include_aliaspragma bármely fejlécfájlnév egy másikhoz való leképezéséhez használható. Például:

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

Ne keverje a kettős idézőjelek közé zárt fájlneveket szögletes zárójelek közé zárt fájlnevekkel. A fenti két #pragma include_alias direktíva alapján például a fordító nem helyettesíti a következő #include irányelveket:

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

Ezenkívül a következő irányelv hibát okoz:

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

A hibaüzenetekben jelentett fájlnév vagy az előre definiált __FILE__ makró értéke a fájl neve a helyettesítés után. Lásd például a kimenetet a következő irányelvek után:

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

A VERYLONGFILENAME.H hiba a következő hibaüzenetet eredményezi:

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

Azt is vegye figyelembe, hogy az átvittság nem támogatott. Tekintettel a következő irányelvekre,

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

A fordító a three.hhelyett a fájl two.h keres.

Lásd még:

Pragma irányelvei, valamint a __pragma és _Pragma kulcsszavak