Macro predefinite
Elenca le macro predefinite del preprocessore di implementazione ANSI/ISO C99 e Microsoft C++.
Il compilatore riconosce le macro predefinite del preprocessore ANSI/ISO C99 C e l'implementazione Microsoft C++ ne fornisce diverse altre. Queste macro del preprocessore non accettano argomenti e non possono essere ridefinite. Alcune delle macro predefinite elencate in questo articolo vengono definite con più valori.
Macro predefinite conformi a ANSI
Macro |
Descrizione |
---|---|
__DATE__ |
Data di compilazione del file di origine corrente. La data è un valore letterale stringa in formato Mmm gg aaaa. Il nome del mese Mmm è identico a quello delle date generate dalla funzione di libreria asctime dichiarata in TIME.H. |
__FILE__ |
Nome del file di origine corrente. __FILE__ si espande in un valore letterale stringa. Per assicurarsi che venga visualizzato il percorso completo del file, usare /FC (Percorso completo del file di codice sorgente nella diagnostica). |
__func__ |
Restituisce il nome non qualificato e non decorato della funzione contenitore come matrice di char.
|
__LINE__ |
Numero di riga nel file di origine corrente. Il numero di riga è un valore letterale Integer decimale. Può essere modificato con una direttiva #line. |
__STDC__ |
Indica la conformità allo standard ANSI/ISO C99. Definito come costante del valore letterale Integer 1 solo se l'opzione del compilatore /Za è specificata e non si sta compilando un codice C++. In caso contrario, non è definito. |
__TIME__ |
Ora di compilazione più recente del file di origine corrente. L'ora è un valore letterale stringa in formato hh:mm:ss. |
__TIMESTAMP__ |
Data e ora dell'ultima modifica del file di origine corrente, espresse come valore letterale stringa in formato Ggg Mmm Data hh:mm:ss yyyy, dove Ggg è il giorno della settimana abbreviato e Data è un numero intero compreso tra 1 e 31. |
Macro predefinite specifiche di Microsoft
Macro |
Descrizione |
---|---|
_ATL_VER |
Definisce la versione ATL, codificata come valore letterale Integer. |
__AVX__ |
Definita se è specificata l'opzione /arch:AVX o /arch:AVX2. |
__AVX2__ |
Definita se è specificata l'opzione /arch:AVX2. |
_CHAR_UNSIGNED |
Il tipo char predefinito è senza segno. Definito se è specificata l'opzione /J. |
__CLR_VER |
Definisce la versione di Common Language Runtime usata al momento della compilazione dell'applicazione. Il valore restituito è un valore letterale Integer codificato nel seguente formato: Mmmbbbbb dove
|
__cplusplus_cli |
Definita quando si esegue la compilazione con /clr, /clr:pure o /clr:safe. Il valore di __cplusplus_cli è il valore letterale Integer 200406. __cplusplus_cli è attivo nell'unità di conversione.
|
__cplusplus_winrt |
Definita quando si usa l'opzione di compilazione /ZW. Il valore di __cplusplus_winrt è il valore letterale Integer 201009. |
__COUNTER__ |
Si espande in un valore letterale Integer che inizia con 0 e viene incrementato di 1 unità ogni volta che viene usato in un file di origine o viene incluso nelle intestazioni del file di origine. __COUNTER__ memorizza il rispettivo stato quando si usano intestazioni precompilate. Nell'esempio seguente viene usato __COUNTER__ per assegnare identificatori univoci a tre oggetti diversi dello stesso tipo. Si prenda innanzitutto in considerazione la seguente definizione di classe. Il costruttore accetta un Integer come parametro.
In Main l'applicazione dichiara tre oggetti di tipo exampleClass, usando __COUNTER__ come parametro dell'identificatore univoco.
|
__cplusplus |
Definita solo per i programmi C++. |
_CPPRTTI |
Definita per il codice compilato con /GR (Abilita informazioni sui tipi in fase di esecuzione). |
_CPPUNWIND |
Definita per il codice compilato usando uno dei flag di /EH (Modello di gestione delle eccezioni). |
_DEBUG |
Definita quando si esegue la compilazione con /LDd, /MDd e /MTd. |
_DLL |
Definita quando vengono specificate le opzioni /MD o /MDd (DLL con multithreading). |
__FUNCDNAME__ |
Valida solo in una funzione. Definisce il nome decorato della funzione contenitore come valore letterale stringa. __FUNCDNAME__ non viene espansa se si usano le opzioni del compilatore /EP o /P. Nell'esempio seguente vengono usate le macro __FUNCDNAME__, __FUNCSIG__ e __FUNCTION__ per visualizzare le informazioni sulle funzioni.
|
__FUNCSIG__ |
Valida solo in una funzione. Definisce la firma della funzione contenitore come valore letterale stringa. __FUNCSIG__ non viene espansa se si usano le opzioni del compilatore /EP o /P. In un sistema operativo a 64 bit, la convenzione di chiamata predefinita è __cdecl. Per un esempio, vedere __FUNCDNAME__. |
__FUNCTION__ |
Valida solo in una funzione. Definisce il nome non decorato della funzione contenitore come valore letterale stringa. __FUNCTION__ non viene espansa se si usano le opzioni del compilatore /EP o /P. Per un esempio, vedere __FUNCDNAME__. |
_INTEGRAL_MAX_BITS |
Indica la dimensione massima (in bit) per un tipo integrale come valore letterale Integer.
|
_M_AMD64 |
Definito per le compilazioni destinate a processori x64. |
_M_ARM |
Definito per le compilazioni destinate a processori ARM. |
_M_CEE |
Definita per una compilazione eseguita con qualsiasi formato dell'opzione /clr (ad esempio /clr:oldSyntax, /clr:safe). |
_M_CEE_PURE |
Definita per una compilazione eseguita con l'opzione /clr:pure. |
_M_CEE_SAFE |
Definita per una compilazione eseguita con l'opzione /clr:safe. |
_M_IX86 |
Definito per le compilazioni destinate a processori x86. Non è definita per i processori x64. |
_M_ARM_FP |
Si espande in un valore letterale Integer che indica quale opzione del compilatore /arch è stata usata:
|
_M_IX86_FP |
Si espande in un valore letterale Integer che indica quale opzione del compilatore /arch è stata usata:
|
_M_X64 |
Definito per le compilazioni destinate a processori x64. |
_MANAGED |
Definita come 1 se è specificata l'opzione /clr. |
_MFC_VER |
Definisce la versione MFC, codificata come valore letterale Integer. |
_MSC_BUILD |
Restituisce un valore letterale Integer che contiene il componente che specifica il numero di revisione del numero di versione del compilatore. Il numero di revisione è il quarto componente del numero di versione separato dal punto. Ad esempio, se il numero di versione del compilatore di Visual C++ è 15.00.20706.01, la macro _MSC_BUILD restituisce 1. |
_MSC_EXTENSIONS |
Questa macro viene definita quando si usa l'opzione del compilatore /Ze (impostazione predefinita). Il valore di tale macro, una volta definita, è 1. |
_MSC_FULL_VER |
Restituisce un valore letterale Integer che contiene i componenti che specificano il numero principale, il numero secondario e il numero di build del numero di versione del compilatore. Il numero principale è il primo componente del numero di versione separato dal punto, mentre il numero secondario e il numero di build costituiscono rispettivamente il secondo e il terzo componente. Ad esempio, se il numero di versione del compilatore di Visual C++ è 15.00.20706.01, la macro _MSC_FULL_VER restituisce 150020706. Digitare cl /? nella riga di comando per visualizzare il numero di versione del compilatore. |
_MSC_VER |
Restituisce un valore letterale Integer che contiene i componenti che specificano il numero principale e il numero secondario del numero di versione del compilatore. Il numero principale è il primo componente del numero di versione separato dal punto e il numero secondario è il secondo componente. Ad esempio, se il numero di versione del compilatore di Visual C++ è 17.00.51106.1, la macro _MSC_VER restituisce 1700. Digitare cl /? nella riga di comando per visualizzare il numero di versione del compilatore. |
__MSVC_RUNTIME_CHECKS |
Definita se viene specificata una delle opzioni del compilatore /RTC. |
_MT |
Definita se sono specificate le opzioni /MD o /MDd (DLL con multithreading) o le opzioni /MT o /MTd (Multithreading). |
_NATIVE_WCHAR_T_DEFINED |
Definita quando viene usata l'opzione /Zc:wchar_t. |
_OPENMP |
Definita se la compilazione con /openmp restituisce un valore letterale Integer che rappresenta la data della specifica OpenMP implementata da Visual C++.
|
_VC_NODEFAULTLIB |
Definita quando viene usata l'opzione /Zl. Per altre informazioni, vedere /Zl (Omette il nome della libreria predefinita). |
_WCHAR_T_DEFINED |
Definita quando viene usata l'opzione /Zc:wchar_t oppure se wchar_t viene definito in un file di intestazione di sistema incluso nel progetto. |
_WIN32 |
Definita per le applicazioni per Win32 e Win64. Sempre definita. |
_WIN64 |
Definita per le applicazioni per Win64. |