Regole di uniformità per l'utilizzo per singolo file delle intestazioni precompilate
L'opzione del compilatore /Yu consente di specificare il file di intestazione precompilato (PCH) da utilizzare.
Quando si utilizza un PCH, il compilatore si basa sul presupposto che, se non diversamente specificato, l'ambiente di compilazione sia lo stesso utilizzato al momento della creazione del PCH (utilizzo delle stesse opzioni di compilazione, degli stessi pragma e così via). Se il compilatore rileva delle inconsistenze, viene visualizzato un messaggio di avviso e l'incongruenza viene rilevata, se possibile. Questi avvisi non indicano necessariamente un problema del PCH, ma informano semplicemente di possibili conflitti. I requisiti di uniformità per i PCH sono descritti nelle sezioni che seguono.
Uniformità tra le opzioni di compilazione
Quando si utilizza un PCH è possibile che le seguenti opzioni di compilazione generino un messaggio di avviso di incongruenza:
Le macro create mediante l'opzione Preprocessore (/D) devono essere identiche tra la compilazione corrente e la compilazione che ha creato il PCH. Lo stato delle costanti definite non viene esaminato, ma se queste sono modificate possono verificarsi risultati inattesi.
I PCH non sono utilizzabili con le opzioni /E ed /EP.
È necessario che i PCH vengano creati mediante l'opzione Generate Browse Info (/FR) o Exclude Local Variables (/Fr) prima che le successive compilazioni che utilizzano il PCH possano fare uso di queste opzioni.
Compatibile C7 (/Z7)
Se questa opzione è selezionata quando si crea il PCH, le successive compilazioni che utilizzano PCH possono sfruttare le informazioni di debug.
Se invece l'opzione Compatibile C7 (/Z7) non è selezionata al momento della creazione del PCH, le successive compilazioni che utilizzano PCH e l'opzione /Z7 generano un messaggio di avviso. Le informazioni di debug sono inserite nel file obj corrente e i simboli locali definiti nel PCH non sono disponibili per il debugger.
Uniformità tra i percorsi di inclusione
I PCH non contengono informazioni sul percorso di inclusione esistente al momento della creazione. Quando si utilizza un file PCH, il compilatore utilizza sempre il percorso di inclusione specificato nella compilazione corrente.
Uniformità tra i file di origine
Quando si specifica l'opzione Use Precompiled Header File (/Yu), il compilatore ignora tutte le direttive del preprocessore (inclusi i pragma) presenti nel codice sorgente che verrà precompilato. La compilazione specificata dalle direttive del preprocessore deve essere la stessa utilizzata dalla compilazione per l'opzione Create Precompiled Header File (/Yc).
Uniformità tra i pragma
I pragma elaborati durante la creazione di un PCH hanno in genere effetto sul file con il quale il PCH verrà in seguito utilizzato. I pragma di commento e messaggio non hanno alcun effetto sul resto della compilazione.
I pragma elencati di seguito vengono conservati come parte di un PCH e hanno effetto sulla parte restante di una compilazione che fa uso del PCH.
alloc_text |
include_alias |
pack |
auto_inline |
init_seg |
pointers_to_members |
check_stack |
inline_depth |
setlocale |
code_seg |
inline_recursion |
vtordisp |
data_seg |
intrinsic |
warning |
function |
optimize |
|
Vedere anche
Riferimenti
Regole di uniformità per le intestazioni precompilate