include_alias
Určuje, že název short_filename má být použit jako alias názvu long_filename.
#pragma include_alias( "long_filename", "short_filename" )
#pragma include_alias( <long_filename>, <short_filename> )
Poznámky
Některé systémy souborů povolují delší názvy souborů hlaviček než omezení 8.3 systému souborů FAT.Kompilátor nemůže jednoduše zkrátit delší názvy na formát 8.3, protože prvních 8 znaků delšího názvu souboru hlaviček nemusí být jedinečných.Vždy, kdy kompilátor nalezne řetězec long_filename, nahradí jej řetězcem short_filename a hledá soubor hlaviček short_filename.Tato direktiva pragma se musí vyskytovat před odpovídajícími direktivami #include.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"
Hledaný alias se musí se specifikací přesně shodovat ve velikosti písmen, jejich pořadí i použití dvojitých uvozovek či ostrých závorek.Direktiva pragma include_alias provede jednoduchou kontrolu shody řetězců názvů souborů. Žádné další ověření názvu souboru se neprovádí.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í zavedení aliasů (nahrazení) provedeno, protože řetězce souborů hlaviček nejsou přesně shodné.Názvy souborů hlaviček použité jako argumenty možností kompilátoru /Yu a /Yc nebo direktivy pragma hdrstop také nejsou nahrazeny.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í direktivy pragma include_alias lze mapovat libovolný název souboru hlaviček 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>
Nezaměňujte názvy souborů uzavřené v uvozovkách s názvy souborů uzavřených v ostrých závorkách.Jsou-li například dány předchozí dvě direktivy #pragma include_alias, kompilátor neprovede žádné nahrazení v následujících direktivách #include:
#include <api.h>
#include "stdio.h"
Dále, následující direktiva způsobí chybu:
#pragma include_alias(<header.h>, "header.h") // Error
Povšimněte si, že název souboru uvedený v chybových zprávách nebo v hodnotě předdefinovaného makra __FILE__ je název souboru po jeho nahrazení.Například po následujících direktivách,
#pragma include_alias( "VeryLongFileName.H", "myfile.h" )
#include "VeryLongFileName.H"
vygeneruje chyba v souboru VERYLONGFILENAME.H následující chybovou zprávu:
myfile.h(15) : error C2059 : syntax error
Povšimněte si také, že není podporována přenositelnost.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á namísto souboru THREE.H soubor TWO.H.