Sdílet prostřednictvím


include_alias pragma

Určuje, že když se alias_filename najde v #include direktivě, kompilátor nahradí actual_filename na svém místě.

Syntaxe

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

Poznámky

Direktiva include_aliaspragma umožňuje nahradit soubory s různými názvy nebo cestami pro názvy souborů, které jsou součástí zdrojových souborů. Některé systémy souborů například umožňují delší názvy hlaviček, než je limit systému souborů FAT 8.3. Kompilátor nemůže jenom zkrátit delší názvy na 8.3, protože prvních osm znaků delších názvů záhlaví nemusí být jedinečné. Kdykoli kompilátor uvidí alias_filename řetězec v direktivě #include , nahradí místo toho název actual_filename . Potom načte soubor hlavičky actual_filename . Musí pragma se zobrazit před odpovídajícími #include direktivy. Příklad:

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

Alias, který se má hledat, musí přesně odpovídat specifikaci. Velká a pravopisná a použití dvojitých uvozovek nebo úhlových závorek se musí shodovat. Provede include_aliaspragma jednoduchý řetězec odpovídající názvům souborů. Neprovádí se žádné další ověření názvu souboru. Jsou-li například dány následující direktivy,

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

Není provedeno žádné nahrazení aliasů, protože řetězce souborů hlaviček se přesně neshodují. Názvy hlaviček používané také jako argumenty /Yu pro možnosti kompilátoru /Ychdrstoppragmanebo se nenahrazují. Obsahuje-li zdrojový kód například následující direktivu,

#include <AppleSystemHeaderStop.h>

měla by odpovídající možnost kompilátoru být

/YcAppleSystemHeaderStop.h

Pomocí příkazu include_aliaspragma můžete namapovat libovolný název záhlaví na jiný. Příklad:

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

Nemíchejte názvy souborů uzavřené do dvojitých uvozovek s názvy souborů uzavřenými v úhlových závorkách. Například s ohledem na výše uvedené dvě #pragma include_alias direktivy kompilátor nenahradí následující #include direktivy:

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

Následující direktiva dále způsobí chybu:

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

Název souboru hlášený v chybových zprávách nebo jako hodnota předdefinovaného __FILE__ makra je název souboru po dokončení nahrazení. Podívejte se například na výstup za následující direktivy:

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

Chyba vygeneruje VERYLONGFILENAME.H následující chybovou zprávu:

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

Mějte také na paměti, že tranzitita není podporovaná. Jsou-li dány následující direktivy,

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

kompilátor hledá soubor two.h , nikoli three.h.

Viz také

Direktivy Pragma a __pragma_Pragma klíčová slova