Compartir por


include_alias pragma

Especifica que, cuando se encuentra alias_filename en una directiva #include, el compilador sustituye actual_filename en su lugar.

Sintaxis

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

Comentarios

La directiva include_aliaspragma permite sustituir los archivos que tienen nombres o rutas de acceso diferentes para los nombres de archivo incluidos en los archivos de código fuente. Por ejemplo, algunos sistemas de archivos permiten nombres de archivo de encabezado más largos que el límite de sistema de archivos FAT 8.3. No basta con que el compilador trunque los nombres más largos a 8.3, porque los ocho primeros caracteres de los nombres de archivo de encabezado más largos pueden no ser únicos. Cada vez que el compilador ve la cadena alias_filename en una directiva #include, sustituye el nombre actual_filename en su lugar. A continuación, carga el archivo de encabezado actual_filename. Esta directiva #include debe aparecer antes de las directivas pragma correspondientes. Por ejemplo:

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

El alias que se va a buscar debe coincidir exactamente con la especificación. Las mayúsculas y minúsculas, la ortografía y el uso de comillas dobles o corchetes angulares deben coincidir. La directiva pragmainclude_alias hace una simple coincidencia de cadenas en los nombres de los archivos. No se realiza ninguna otra validación de nombre de archivo. Por ejemplo, dadas las siguientes directivas,

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

no se realiza ninguna sustitución de alias, ya que las cadenas de archivo de encabezado no coinciden exactamente. Además, tampoco se sustituyen los nombres de archivo de encabezado utilizados como argumentos para las opciones del compilador /Yu y /Yc, o la directiva pragmahdrstop. Por ejemplo, si el archivo de código fuente contiene la siguiente directiva,

#include <AppleSystemHeaderStop.h>

la opción del compilador correspondiente debe ser

/YcAppleSystemHeaderStop.h

Puede utilizar la directiva pragmainclude_alias para asignar un nombre de archivo de encabezado a otro. Por ejemplo:

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

No mezcle los nombres de archivo delimitados por comillas con los nombres de archivo entre corchetes angulares. Por ejemplo, dadas las dos directivas #pragma include_alias anteriores, el compilador no realiza ninguna sustitución en las siguientes directivas #include:

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

Además, la directiva siguiente genera un error:

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

El nombre de archivo indicado en los mensajes de error, o como el valor de la macro __FILE__ predefinida, es el nombre del archivo una vez realizada la sustitución. Por ejemplo, consulte la salida después de las siguientes directivas:

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

Un error en VERYLONGFILENAME.H produce el mensaje de error siguiente:

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

Observe también que no se admite la transitividad. Dadas las siguientes directivas,

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

el compilador busca el archivo two.h en lugar de three.h.

Consulte también

Pragmadirectivas y las __pragma palabras clave y _Pragma