include_alias
Especifica que short_filename deve ser usado como alias para long_filename.
#pragma include_alias( "long_filename", "short_filename" )
#pragma include_alias( <long_filename>, <short_filename> )
Comentários
Alguns sistemas de arquivos permitem nomes de arquivo de cabeçalho mais longos do que o limite do sistema de arquivos FAT 8.3. O compilador não pode simplesmente truncar nomes mais longos para 8.3, pois os primeiros oito caracteres dos nomes de arquivos de cabeçalho mais longos podem não ser exclusivos. Sempre que o compilador encontra a cadeia de caracteres long_filename, ele substitui short_filename e procura o short_filename do arquivo de cabeçalho. Esse pragma deve aparecer antes das políticas #include correspondentes. Por exemplo:
// 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"
O alias que está sendo pesquisado deve corresponder exatamente a especificação, na ortografia e no uso de aspas duplas ou colchetes angulares. O pragma include_alias faz a correspondência simples de cadeia de caracteres nos nomes de arquivos; nenhuma outra validação do nome de arquivo é executada. Por exemplo, dadas as seguintes políticas,
#pragma include_alias("mymath.h", "math.h")
#include "./mymath.h"
#include "sys/mymath.h"
nenhuma criação de alias (substituição) é executada, pois as cadeias de caracteres do arquivo de cabeçalho não correspondem exatamente. Além disso, os nomes de arquivos de cabeçalho usados como argumentos para as opções do compilador /Yu e /Yc, ou o pragma hdrstop, não são substituídos. Por exemplo, se o arquivo de origem contiver a seguinte política,
#include <AppleSystemHeaderStop.h>
a opção do compilador correspondente deve ser
/YcAppleSystemHeaderStop.h
Você pode usar o pragma include_alias para mapear qualquer nome de arquivo de cabeçalho para outro. Por exemplo:
#pragma include_alias( "api.h", "c:\version1.0\api.h" )
#pragma include_alias( <stdio.h>, <newstdio.h> )
#include "api.h"
#include <stdio.h>
Não misture nomes de arquivos incluídos entre aspas duplas com nomes de arquivos entre colchetes angulares. Por exemplo, nas duas políticas #pragma include_alias acima, o compilador não executa nenhuma substituição nas políticas #include a seguir:
#include <api.h>
#include "stdio.h"
Além disso, a política a seguir gera um erro:
#pragma include_alias(<header.h>, "header.h") // Error
Observe que o nome de arquivo relatado nas mensagens de erro, ou como o valor da macro __FILE__ predefinida, é o nome do arquivo após a substituição ser executada. Por exemplo, após as seguintes políticas,
#pragma include_alias( "VeryLongFileName.H", "myfile.h" )
#include "VeryLongFileName.H"
um erro em VERYLONGFILENAME.H gera a seguinte mensagem de erro:
myfile.h(15) : error C2059 : syntax error
Observe também que a transitividade não tem suporte. Dadas as seguintes políticas,
#pragma include_alias( "one.h", "two.h" )
#pragma include_alias( "two.h", "three.h" )
#include "one.h"
o compilador procura pelo arquivo TWO.H em vez de THREE.H.