Condividi tramite


include_alias

Specifica che è necessario utilizzare short_filename come alias per short_filename.

#pragma include_alias( "long_filename", "short_filename" ) 
#pragma include_alias( <long_filename>, <short_filename> )

Note

Alcuni file system consentono nomi file di intestazione più lunghi rispetto al limite del file system FAT di 8,3. Il compilatore non può semplicemente troncare i nomi più lunghi a 8,3, perché i primi otto caratteri dei nomi file di intestazione più lunghi non possono essere univoci. Ogni volta che il compilatore rileva la stringa long_filename, sostituisce short_filename e cerca invece il file di intestazione short_filename. Questo pragma deve essere visualizzato prima delle direttive #include corrispondenti. Ad esempio:

// 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 cercato deve corrispondere esattamente alla specifica, sia per quanto riguarda le maiuscole/minuscole sia per l'ortografia, sia per l'utilizzo delle virgolette che per le parentesi quadre. Il pragma include_alias esegue una semplice corrispondenza di stringhe nei nomi dei file; non viene eseguita nessun'altra convalida del nome del file. Se si considerando, ad esempio, le seguenti direttive,

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

non viene eseguito nessun alias (sostituzione), poiché le stringhe del file di intestazione non corrispondono esattamente. Inoltre, i nomi del file di intestazione utilizzati come argomenti nelle opzioni del compilatore /Yu e /Yc, oppure il pragma hdrstop, non vengono sostituiti. Ad esempio, se il file di origine contiene la seguente direttiva,

#include <AppleSystemHeaderStop.h>

l'opzione del compilatore corrispondente deve essere

/YcAppleSystemHeaderStop.h

È possibile utilizzare il pragma include_alias per associare qualsiasi nome del file di intestazione a un altro. Ad esempio:

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

Non combinare i nomi file racchiusi tra virgolette doppie con i nomi file racchiusi tra parentesi quadre. Ad esempio, in base alle due direttive superiori #pragma include_alias, il compilatore non esegue alcuna sostituzione alle seguenti direttive #include:

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

Inoltre, la seguente diretta genera un errore:

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

Si noti che il nome del file indicato nei messaggi di errore o come valore della macro __FILE__ predefinita, è il nome del file in seguito alla sostituzione. Ad esempio, in seguito alle seguenti direttive,

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

un errore in VERYLONGFILENAME.H genera il seguente messaggio di errore:

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

Si noti inoltre che la transitività non è supportata. Date le seguenti direttive,

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

il compilatore cerca il file TWO.H piuttosto che THREE.H.

Vedere anche

Riferimenti

Direttive pragma e parola chiave __Pragma