Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Especifica que, quando alias_filename é encontrado em uma diretiva #include, o compilador substitui atual_filename em seu lugar.
Sintaxe
#pragma include_alias("alias_filename","atual_filename")
#pragma include_alias(< alias_filename>,<actual_filename>)
Comentários
A diretiva include_aliaspragma permite que você substitua arquivos que têm nomes ou caminhos diferentes para os nomes de arquivo incluídos pelos arquivos de origem. Por exemplo, alguns sistemas de arquivos permitem nomes de arquivos de cabeçalho mais longos do que o limite do sistema de arquivos FAT 8.3. O compilador não pode simplesmente truncar os nomes mais longos para 8.3, porque os primeiros oito caracteres dos nomes de arquivo de cabeçalho mais longos podem não ser exclusivos. Sempre que o compilador vê a cadeia de caracteres alias_filename em uma diretiva #include, ele substitui o nome atual_filename em vez disso. Em seguida, ele carrega o arquivo de cabeçalho atual_filename. Este pragma deve figurar antes das diretivas #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 a ser pesquisado deve corresponder exatamente à especificação. As maiúsculas e minúsculas, a ortografia e o uso de aspas duplas ou colchetes angulares devem corresponder. O include_aliaspragma faz a correspondência de cadeia de caracteres simples nos nomes dos arquivos. Nenhuma outra validação de nome de arquivo é executada. Por exemplo, tendo em conta as seguintes diretivas,
#pragma include_alias("mymath.h", "math.h")
#include "./mymath.h"
#include "sys/mymath.h"
Nenhuma substituição de alias é feita, uma vez que as cadeias de caracteres do arquivo de cabeçalho não correspondem exatamente. Além disso, os nomes de arquivo de cabeçalho usados como argumentos para as opções de compilador /Yu e /Yc, ou o hdrstoppragma, não são substituídos. Por exemplo, se o arquivo de origem contiver a seguinte diretiva,
#include <AppleSystemHeaderStop.h>
a opção de compilador correspondente deve ser
/YcAppleSystemHeaderStop.h
Você pode usar o include_aliaspragma 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 entre aspas duplas com nomes de arquivos entre colchetes angulares. Por exemplo, dadas as duas diretivas #pragma include_alias acima, o compilador não substitui as seguintes diretivas #include:
#include <api.h>
#include "stdio.h"
Além disso, a seguinte diretiva gera um erro:
#pragma include_alias(<header.h>, "header.h") // Error
O nome do arquivo relatado em mensagens de erro, ou como o valor da macro __FILE__ predefinida, é o nome do arquivo após a substituição ser feita. Por exemplo, consulte a saída após as seguintes diretivas:
#pragma include_alias( "VERYLONGFILENAME.H", "myfile.h" )
#include "VERYLONGFILENAME.H"
Um erro no VERYLONGFILENAME.H produz a seguinte mensagem de erro:
myfile.h(15) : error C2059 : syntax error
Observe também que a transitividade não é suportada. Tendo em conta as seguintes diretivas:
#pragma include_alias( "one.h", "two.h" )
#pragma include_alias( "two.h", "three.h" )
#include "one.h"
O compilador procura o arquivo two.h em vez de three.h.