Compartilhar via


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.

Consulte também

Referência

Diretivas Pragma e a palavra-chave __Pragma