include_alias
spécifie que le short_filename doit être utilisé comme alias pour le long_filename.
#pragma include_alias( "long_filename", "short_filename" )
#pragma include_alias( <long_filename>, <short_filename> )
Notes
Certains systèmes de fichiers permettent de plus longs noms de fichiers d'en-tête que la limite système de fichiers FAT 8,3.Le compilateur ne peut pas simplement tronquer les noms longs à 8,3, car les huit premiers caractères des noms de fichiers longs d'en-tête peuvent ne pas être uniques.Lorsque le compilateur rencontre la chaîne de long_filename , elle remplace le short_filename, et recherche le short_filename de fichier d'en-tête à la place.Ce pragma doit apparaître avant les directives de correspondance d' #include .Par exemple :
// 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"
L'alias recherché doit répondre à la spécification exactement, si ainsi que d'orthographe et en cours de utilisation des guillemets doubles ou de crochets.Le pragma d' include_alias exécute la correspondance de chaîne simple sur les noms de fichiers ; aucune autre validation de nom de fichier n'est effectuée.Par exemple, dans les directives suivantes,
#pragma include_alias("mymath.h", "math.h")
#include "./mymath.h"
#include "sys/mymath.h"
aucun alias (substitution) n'est exécuté, comme les chaînes de fichier d'en-tête ne correspondent pas exactement.En outre, les noms de fichiers d'en-tête utilisés comme arguments aux options du compilateur /Yu et /Yc, ou le pragma de hdrstop , ne sont pas substituées.par exemple, si votre fichier source contient la directive suivante,
#include <AppleSystemHeaderStop.h>
l'option du compilateur correspondante doit être
/YcAppleSystemHeaderStop.h
Vous pouvez utiliser le pragma d' include_alias pour mapper d'un nom de fichier d'en-tête à un autre.Par exemple :
#pragma include_alias( "api.h", "c:\version1.0\api.h" )
#pragma include_alias( <stdio.h>, <newstdio.h> )
#include "api.h"
#include <stdio.h>
Ne combinez pas les noms de fichiers placés entre guillemets contenant des noms de fichiers en les plaçant entre crochets pointus.Par exemple, dans les deux directives ci-dessus d' include_alias #pragma , le compilateur n'exécute aucune substitution sur les directives suivantes d' #include :
#include <api.h>
#include "stdio.h"
en outre, la directive suivante génère une erreur :
#pragma include_alias(<header.h>, "header.h") // Error
Notez que le nom de fichier stocké dans les messages d'erreur, ou comme valeur de la macro prédéfinie de __FILE , est le nom du fichier après la substitution a été effectuée.par exemple, après les directives suivantes,
#pragma include_alias( "VeryLongFileName.H", "myfile.h" )
#include "VeryLongFileName.H"
une erreur dans VERYLONGFILENAME.H produit le message d'erreur suivant :
myfile.h(15) : error C2059 : syntax error
notez également que la transitivité n'est pas prise en charge.En supposant les directives suivantes,
#pragma include_alias( "one.h", "two.h" )
#pragma include_alias( "two.h", "three.h" )
#include "one.h"
les recherches de compilateur pour le fichier TWO.H plutôt que THREE.H.