Macro predefinite
Il compilatore Microsoft C/C++ (MSVC) consente di predefinito determinate macro del preprocessore a seconda del linguaggio (C o C++), della destinazione di compilazione e delle opzioni del compilatore scelte.
MSVC supporta le macro predefinite del preprocessore richieste dagli standard ANSI/ISO C99, C11 e C17 e ISO C++14, C++17 e C++20. L'implementazione supporta anche diverse macro del preprocessore specifiche di Microsoft.
Alcune macro sono definite solo per ambienti di compilazione specifici o opzioni del compilatore. Ad eccezione di quanto indicato, le macro vengono definite in un'unità di conversione come se fossero specificate come /D
argomenti di opzione del compilatore. Se definito, il preprocessore espande le macro i relativi valori specificati prima della compilazione. Le macro predefinite non accettano argomenti e non possono essere ridefiniti.
Identificatore predefinito standard
Il compilatore supporta questo identificatore predefinito specificato da ISO C99 e ISO C++11.
__func__
Nome non qualificato e non adorato della funzione di inclusione come matrice const statica locale della funzione dichar
.void example() { printf("%s\n", __func__); } // prints "example"
Macro predefinite standard
Il compilatore supporta queste macro predefinite specificate dagli standard ISO C99, C11, C17 e ISO C++17.
__cplusplus
Definito come valore letterale integer quando l'unità di conversione viene compilata come C++. In caso contrario, non definito.__DATE__
Data di compilazione del file di origine corrente. La data è un valore letterale stringa di lunghezza costante del formato Mmm gg aaaa. Il nome del mese Mmm corrisponde al nome del mese abbreviato generato dalla funzione asctime della libreria di runtime C (CRT). Il primo carattere di data dd è uno spazio se il valore è minore di 10. Questa macro è sempre definita.__FILE__
Nome del file di origine corrente.__FILE__
si espande fino a un valore letterale stringa di caratteri. Per assicurarsi che venga visualizzato il percorso completo del file, usare/FC
(percorso completo del file di codice sorgente in Diagnostica). Questa macro è sempre definita.__LINE__
Definito come numero di riga intero nel file di origine corrente. Il valore di questa macro può essere modificato utilizzando una#line
direttiva . Il tipo integrale del valore di__LINE__
può variare a seconda del contesto. Questa macro è sempre definita.__STDC__
Definito come 1 quando viene compilato come C e se viene specificata l'opzione del/Za
compilatore. A partire da Visual Studio 2022 versione 17.2, viene definito come 1 quando viene compilato come C e se è specificata l'opzione del/std:c11
compilatore o/std:c17
. In caso contrario, non definito.__STDC_HOSTED__
Definito come 1 se l'implementazione è un'implementazione ospitata, una che supporta l'intera libreria standard richiesta. In caso contrario, definito come 0.__STDC_NO_ATOMICS__
Definito come 1 se l'implementazione non supporta atomici standard facoltativi. L'implementazione MSVC lo definisce come 1 quando viene compilato come C e viene specificata una delle/std
opzioni C11 o C17.__STDC_NO_COMPLEX__
Definito come 1 se l'implementazione non supporta numeri complessi standard facoltativi. L'implementazione MSVC lo definisce come 1 quando viene compilato come C e viene specificata una delle/std
opzioni C11 o C17.__STDC_NO_THREADS__
Definito come 1 se l'implementazione non supporta thread standard facoltativi. L'implementazione MSVC lo definisce come 1 quando viene compilato come C e viene specificata una delle/std
opzioni C11 o C17.__STDC_NO_VLA__
Definito come 1 se l'implementazione non supporta matrici di lunghezza variabile standard. L'implementazione MSVC lo definisce come 1 quando viene compilato come C e viene specificata una delle/std
opzioni C11 o C17.__STDC_VERSION__
Definito quando viene compilato come C e viene specificata una delle/std
opzioni C11 o C17. Si espande in201112L
per/std:c11
e201710L
per/std:c17
.__STDCPP_DEFAULT_NEW_ALIGNMENT__
Quando/std:c17
si specifica o versione successiva, questa macro si espande in unsize_t
valore letterale con il valore dell'allineamento garantito da una chiamata a alignment-unwareoperator new
. Gli allineamenti più grandi vengono passati a un overload compatibile con l'allineamento, ad esempiooperator new(std::size_t, std::align_val_t)
. Per altre informazioni, vedere (allocazione sovraallineare C++17).For more information, see/Zc:alignedNew
(C++17 over-aligned allocation).__STDCPP_THREADS__
Definito come 1 se e solo se un programma può avere più di un thread di esecuzione e compilato come C++. In caso contrario, non definito.__TIME__
Ora di traduzione dell'unità di traduzione pre-elaborata. L'ora è un valore letterale stringa di caratteri del formato hh:mm:ss, uguale all'ora restituita dalla funzione asctime CRT. Questa macro è sempre definita.
Macro predefinite specifiche di Microsoft
MSVC supporta altre macro predefinite:
__ARM_ARCH
Definito come valore letterale integer che rappresenta la versione dell'architettura arm. Il valore è definito come 8 per l'architettura Armv8-A. Per 8.1 e versioni successive, il valore viene ridimensionato per le versioni secondarie, ad esempio X.Y, usando la formula X * 100 + Y come definito dall'estensione del linguaggio ARM C. Ad esempio, per Armv8.1,__ARM_ARCH
è 8 * 100 + 1 o 801. Per impostare la versione dell'architettura arm, vedere/arch (ARM64)
. Questa macro è stata introdotta in Visual Studio 2022 versione 17.10.__ATOM__
Definito come 1 quando l'opzione del/favor:ATOM
compilatore è impostata e la destinazione del compilatore è x86 o x64. In caso contrario, non definito.__AVX__
Definito come 1 quando vengono impostate le opzioni del/arch:AVX
compilatore ,/arch:AVX2
/arch:AVX512
o/arch:AVX10.1
e la destinazione del compilatore è x86 o x64. In caso contrario, non definito.__AVX2__
Definito come 1 quando viene impostata l'opzione/arch:AVX2
del/arch:AVX512
compilatore o/arch:AVX10.1
e la destinazione del compilatore è x86 o x64. In caso contrario, non definito.__AVX512BW__
Definito come 1 quando l'opzione del/arch:AVX512
compilatore o/arch:AVX10.1
è impostata e la destinazione del compilatore è x86 o x64. In caso contrario, non definito.__AVX512CD__
Definito come 1 quando l'opzione del/arch:AVX512
compilatore o/arch:AVX10.1
è impostata e la destinazione del compilatore è x86 o x64. In caso contrario, non definito.__AVX512DQ__
Definito come 1 quando l'opzione del/arch:AVX512
compilatore o/arch:AVX10.1
è impostata e la destinazione del compilatore è x86 o x64. In caso contrario, non definito.__AVX512F__
Definito come 1 quando l'opzione del/arch:AVX512
compilatore o/arch:AVX10.1
è impostata e la destinazione del compilatore è x86 o x64. In caso contrario, non definito.__AVX512VL__
Definito come 1 quando l'opzione del/arch:AVX512
compilatore o/arch:AVX10.1
è impostata e la destinazione del compilatore è x86 o x64. In caso contrario, non definito.__AVX10_VER__
Definito come numero intero che rappresenta la versione di AVX10 quando viene impostata l'opzione/arch:AVX10.1
del compilatore e la destinazione del compilatore è x86 o x64. In caso contrario, non definito._CHAR_UNSIGNED
Definito come 1 se il tipo predefinitochar
è senza segno. Questo valore viene definito quando è impostata l'opzione del/J
compilatore (tipo char predefinito non firmato). In caso contrario, non definito.__CLR_VER
Definito come valore letterale integer che rappresenta la versione di Common Language Runtime (CLR) usata per compilare l'app. Il valore viene codificato nel formatoMmmbbbbb
, doveM
è la versione principale del runtime,mm
è la versione secondaria del runtime edbbbbb
è il numero di build.__CLR_VER
viene definito se l'opzione del/clr
compilatore è impostata. In caso contrario, non definito.// clr_ver.cpp // compile with: /clr using namespace System; int main() { Console::WriteLine(__CLR_VER); }
_CONTROL_FLOW_GUARD
Definito come 1 quando è impostata l'opzione del/guard:cf
compilatore (Abilita Protezione flusso di controllo). In caso contrario, non definito.__COUNTER__
Si espande in un valore letterale integer che inizia da 0. Il valore viene incrementato di 1 ogni volta che viene usato in un file di origine o nelle intestazioni incluse del file di origine.__COUNTER__
memorizza lo stato quando si usano intestazioni precompilate. Questa macro è sempre definita.In questo esempio viene
__COUNTER__
usato per assegnare identificatori univoci a tre oggetti diversi dello stesso tipo. IlexampleClass
costruttore accetta un numero intero come parametro. Inmain
l'applicazione dichiara tre oggetti di tipoexampleClass
, usando__COUNTER__
come parametro di identificatore univoco:// macro__COUNTER__.cpp // Demonstration of __COUNTER__, assigns unique identifiers to // different objects of the same type. // Compile by using: cl /EHsc /W4 macro__COUNTER__.cpp #include <stdio.h> class exampleClass { int m_nID; public: // initialize object with a read-only unique ID exampleClass(int nID) : m_nID(nID) {} int GetID(void) { return m_nID; } }; int main() { // __COUNTER__ is initially defined as 0 exampleClass e1(__COUNTER__); // On the second reference, __COUNTER__ is now defined as 1 exampleClass e2(__COUNTER__); // __COUNTER__ is now defined as 2 exampleClass e3(__COUNTER__); printf("e1 ID: %i\n", e1.GetID()); printf("e2 ID: %i\n", e2.GetID()); printf("e3 ID: %i\n", e3.GetID()); // Output // ------------------------------ // e1 ID: 0 // e2 ID: 1 // e3 ID: 2 return 0; }
__cplusplus_cli
Definito come valore letterale integer 200406 quando viene compilato come C++ e viene impostata un'opzione/clr
del compilatore. In caso contrario, non definito. Se definito,__cplusplus_cli
è attivo in tutta l'unità di conversione.// cplusplus_cli.cpp // compile by using /clr #include "stdio.h" int main() { #ifdef __cplusplus_cli printf("%d\n", __cplusplus_cli); #else printf("not defined\n"); #endif }
__cplusplus_winrt
Definito come valore letterale integer 201009 quando viene compilato come C++ e viene impostata l'opzione del/ZW
compilatore (compilazione Di Windows Runtime). In caso contrario, non definito._CPPRTTI
Definito come 1 se è impostata l'opzione del/GR
compilatore (Abilita informazioni sul tipo di runtime). In caso contrario, non definito._CPPUNWIND
Definito come 1 se vengono impostate una o più opzioni del/GX
compilatore (Abilita gestione eccezioni),/clr
(Compilazione Common Language Runtime) o/EH
(Modello di gestione delle eccezioni). In caso contrario, non definito._DEBUG
Definito come 1 quando è impostata l'opzione/LDd
del compilatore ,/MDd
o/MTd
. In caso contrario, non definito._DLL
Definito come 1 quando è impostata l'opzione del/MD
compilatore o/MDd
(DLL multithreading). In caso contrario, non definito.__FUNCDNAME__
Definito come valore letterale stringa che contiene il nome decorato della funzione contenitore. La macro è definita solo all'interno di una funzione. La__FUNCDNAME__
macro non viene espansa se si usa l'opzione del/EP
compilatore o/P
.In questo esempio vengono utilizzate le
__FUNCDNAME__
macro ,__FUNCSIG__
e__FUNCTION__
per visualizzare le informazioni sulla funzione.// Demonstrates functionality of __FUNCTION__, __FUNCDNAME__, and __FUNCSIG__ macros void exampleFunction() { printf("Function name: %s\n", __FUNCTION__); printf("Decorated function name: %s\n", __FUNCDNAME__); printf("Function signature: %s\n", __FUNCSIG__); // Sample Output // ------------------------------------------------- // Function name: exampleFunction // Decorated function name: ?exampleFunction@@YAXXZ // Function signature: void __cdecl exampleFunction(void) }
__FUNCSIG__
Definito come valore letterale stringa che contiene la firma della funzione contenitore. La macro è definita solo all'interno di una funzione. La__FUNCSIG__
macro non viene espansa se si usa l'opzione del/EP
compilatore o/P
. Quando viene compilato per una destinazione a 64 bit, la convenzione di chiamata è__cdecl
per impostazione predefinita. Per un esempio di utilizzo, vedere la__FUNCDNAME__
macro.__FUNCTION__
Definito come valore letterale stringa che contiene il nome non dichiarato della funzione contenitore. La macro è definita solo all'interno di una funzione. La__FUNCTION__
macro non viene espansa se si usa l'opzione del/EP
compilatore o/P
. Per un esempio di utilizzo, vedere la__FUNCDNAME__
macro._INTEGRAL_MAX_BITS
Definito come valore letterale intero 64, la dimensione massima (in bit) per un tipo integrale non vettoriale. Questa macro è sempre definita.// integral_max_bits.cpp #include <stdio.h> int main() { printf("%d\n", _INTEGRAL_MAX_BITS); }
__INTELLISENSE__
Definito come 1 durante un passaggio del compilatore IntelliSense nell'IDE di Visual Studio. In caso contrario, non definito. È possibile usare questa macro per proteggere il codice che il compilatore IntelliSense non riconosce o lo usa per alternare la compilazione e il compilatore IntelliSense.You can use this macro to guard code the IntelliSense compiler doesn't understand, or use it to toggle between the build and IntelliSense compiler. Per altre informazioni, vedere Suggerimenti per la risoluzione dei problemi relativi alla lentezza di IntelliSense._ISO_VOLATILE
Definito come 1 se l'opzione del/volatile:iso
compilatore è impostata. In caso contrario, non definito._KERNEL_MODE
Definito come 1 se è impostata l'opzione del/kernel
compilatore (Crea file binario in modalità kernel). In caso contrario, non definito._M_AMD64
Definito come valore letterale intero 100 per le compilazioni destinate a processori x64 o ARM64EC. In caso contrario, non definito._M_ARM
Definito come valore letterale intero 7 per le compilazioni destinate ai processori ARM. Non definito per ARM64, ARM64EC e altre destinazioni._M_ARM_ARMV7VE
Definito come 1 quando l'opzione del/arch:ARMv7VE
compilatore è impostata per le compilazioni destinate ai processori ARM. In caso contrario, non definito._M_ARM_FP
Definito come valore letterale integer che indica l'opzione/arch
del compilatore impostata per le destinazioni del processore ARM. In caso contrario, non definito.Valore compreso nell'intervallo da 30 a 39 se non è stata specificata alcuna
/arch
opzione ARM, che indica che è stata impostata l'architettura predefinita per ARM (VFPv3
).Valore compreso nell'intervallo da 40 a 49 se
/arch:VFPv4
è stato impostato.Per altre informazioni, vedere
/arch
(ARM).
_M_ARM64
Definito come 1 per le compilazioni destinate ad ARM64. In caso contrario, non definito._M_ARM64EC
Definito come 1 per le compilazioni destinate ARM64EC. In caso contrario, non definito._M_CEE
Definito come 001 se è impostata un'opzione/clr
del compilatore (compilazione Common Language Runtime). In caso contrario, non definito._M_CEE_PURE
Deprecato a partire da Visual Studio 2015. Definito come 001 se l'opzione del/clr:pure
compilatore è impostata. In caso contrario, non definito._M_CEE_SAFE
Deprecato a partire da Visual Studio 2015. Definito come 001 se l'opzione del/clr:safe
compilatore è impostata. In caso contrario, non definito._M_FP_CONTRACT
Disponibile a partire da Visual Studio 2022. Definito come 1 se è impostata l'opzione del/fp:contract
compilatore o/fp:fast
. In caso contrario, non definito._M_FP_EXCEPT
Definito come 1 se è impostata l'opzione del/fp:except
compilatore o/fp:strict
. In caso contrario, non definito._M_FP_FAST
Definito come 1 se l'opzione del/fp:fast
compilatore è impostata. In caso contrario, non definito._M_FP_PRECISE
Definito come 1 se l'opzione del/fp:precise
compilatore è impostata. In caso contrario, non definito._M_FP_STRICT
Definito come 1 se l'opzione del/fp:strict
compilatore è impostata. In caso contrario, non definito._M_IX86
Definito come valore letterale intero 600 per le compilazioni destinate ai processori x86. Questa macro non è definita per le destinazioni di compilazione x64 o ARM._M_IX86_FP
Definito come valore letterale integer che indica l'opzione/arch
del compilatore impostata o l'impostazione predefinita. Questa macro viene sempre definita quando la destinazione di compilazione è un processore x86. In caso contrario, non definito. Se definito, il valore è:0 se è stata impostata l'opzione del
/arch:IA32
compilatore.1 se è stata impostata l'opzione del
/arch:SSE
compilatore.2 se è stata impostata l'opzione
/arch:SSE2
del compilatore ,/arch:AVX
/arch:AVX2
,/arch:AVX512
o/arch:AVX10.1
. Questo valore è l'impostazione predefinita se non è stata specificata un'opzione/arch
del compilatore. Quando/arch:AVX
viene specificato, viene definita anche la macro__AVX__
. Quando/arch:AVX2
viene specificato, vengono definiti sia che__AVX__
__AVX2__
. Quando/arch:AVX512
viene specificato ,__AVX__
,__AVX2__
__AVX512BW__
__AVX512DQ__
__AVX512CD__
,__AVX512F__
e__AVX512VL__
vengono definiti anche . Quando/arch:AVX10.1
viene specificato ,__AVX__
,__AVX2__
__AVX512CD__
__AVX512DQ__
__AVX512BW__
,__AVX512F__
__AVX512VL__
e__AVX10_VER__
vengono definiti anche .Per altre informazioni, vedere (x86).For more information, see
/arch
(x86).
_M_X64
Definito come valore letterale intero 100 per le compilazioni destinate a processori x64 o ARM64EC. In caso contrario, non definito._MANAGED
Definito come 1 quando è impostata l'opzione del/clr
compilatore. In caso contrario, non definito._MSC_BUILD
Definito come valore letterale integer che contiene l'elemento numero di revisione del numero di versione del compilatore. Il numero di revisione è l'ultimo elemento del numero di versione delimitato dal punto. Ad esempio, se il numero di versione del compilatore Microsoft C/C++ è 15.00.20706.01, la_MSC_BUILD
macro è 1. Questa macro è sempre definita._MSC_EXTENSIONS
Definito come 1 se è impostata l'opzione del compilatore on-by-default/Ze
(Enable Language Extensions). In caso contrario, non definito._MSC_FULL_VER
Definito come valore letterale integer che codifica gli elementi principale, secondario e numero di build del numero di versione del compilatore. Il numero principale è il primo elemento del numero di versione delimitato da punti, il numero secondario è il secondo elemento e il numero di build è il terzo elemento.Ad esempio, se la versione del compilatore Microsoft C/C++ è 19.39.33519,
_MSC_FULL_VER
è 193933519. Immetterecl /?
nella riga di comando per visualizzare il numero di versione del compilatore. Questa macro è sempre definita. Per altre informazioni sul controllo delle versioni del compilatore, vedere Controllo delle versioni del compilatore C++ e versioni del servizio a partire da Visual Studio 2017 per altre informazioni su Visual Studio 2019 16.8, 16.9, 16.10 e 16.11, che richiedono_MSC_FULL_VER
di distinguerle._MSC_VER
Definito come valore letterale integer che codifica gli elementi di numero principale e secondario del numero di versione del compilatore. Il numero principale è il primo elemento del numero di versione delimitato dal punto e il numero secondario è il secondo elemento. Ad esempio, se il numero di versione del compilatore Microsoft C/C++ è 17.00.51106.1, il valore di_MSC_VER
è 1700. Immetterecl /?
nella riga di comando per visualizzare il numero di versione del compilatore. Questa macro è sempre definita.Per testare le versioni o gli aggiornamenti del compilatore in una determinata versione di Visual Studio o versioni successive, usare l'operatore
>=
. È possibile usarla in una direttiva condizionale per confrontarla_MSC_VER
con quella versione nota. Se sono disponibili diverse versioni che si escludono a vicenda da confrontare, ordinare i confronti in ordine decrescente del numero di versione. Ad esempio, questo codice verifica la presenza di compilatori rilasciati in Visual Studio 2017 e versioni successive. Verifica quindi la presenza di compilatori rilasciati in o dopo Visual Studio 2015. Verifica quindi la presenza di tutti i compilatori rilasciati prima di Visual Studio 2015:#if _MSC_VER >= 1910 // . . . #elif _MSC_VER >= 1900 // . . . #else // . . . #endif
Per altre informazioni su Visual Studio 2019 16.8 e 16.9 e 16.10 e 16.11, che condividono le stesse versioni principali e secondarie (e quindi hanno lo stesso valore per
_MSC_VER
), vedere Versioni del servizio a partire da Visual Studio 2017.Per altre informazioni sulla cronologia del controllo delle versioni del compilatore e sui numeri di versione del compilatore e sulle versioni di Visual Studio a cui corrispondono, vedere Controllo delle versioni del compilatore C++. Inoltre, versione del compilatore Visual C++ nel blog del team di Microsoft C++.
_MSVC_LANG
Definito come valore letterale integer che specifica lo standard del linguaggio C++ di destinazione del compilatore. Solo il codice compilato come C++ lo imposta. La macro è il valore201402L
letterale integer per impostazione predefinita o quando viene specificata l'opzione del/std:c++14
compilatore. La macro è impostata su201703L
se è specificata l'opzione del/std:c++17
compilatore. La macro è impostata su202002L
se è specificata l'opzione del/std:c++20
compilatore. È impostato su un valore più alto e non specificato quando viene specificata l'opzione/std:c++latest
. In caso contrario, la macro non è definita. Le opzioni del_MSVC_LANG
compilatore macro e/std
(Specifica versione standard del linguaggio) sono disponibili a partire da Visual Studio 2015 Update 3.__MSVC_RUNTIME_CHECKS
Definito come 1 quando viene impostata una delle opzioni del/RTC
compilatore. In caso contrario, non definito._MSVC_TRADITIONAL
:- Disponibile a partire da Visual Studio 2017 versione 15.8: definito come 0 quando è impostata l'opzione del compilatore per la modalità
/experimental:preprocessor
di conformità del preprocessore. Definito come 1 per impostazione predefinita o quando è impostata l'opzione del/experimental:preprocessor-
compilatore, per indicare che il preprocessore tradizionale è in uso. - Disponibile a partire da Visual Studio 2019 versione 16.5: definito come 0 quando è impostata l'opzione del compilatore della modalità
/Zc:preprocessor
di conformità del preprocessore. Definito come 1 per impostazione predefinita o quando è impostata l'opzione del/Zc:preprocessor-
compilatore, per indicare che il preprocessore tradizionale è in uso (essenzialmente/Zc:preprocessor
sostituisce l'opzione deprecata/experimental:preprocessor
).
#if !defined(_MSVC_TRADITIONAL) || _MSVC_TRADITIONAL // Logic using the traditional preprocessor #else // Logic using cross-platform compatible preprocessor #endif
- Disponibile a partire da Visual Studio 2017 versione 15.8: definito come 0 quando è impostata l'opzione del compilatore per la modalità
_MT
Definito come 1 quando/MD
viene specificata o/MDd
(DLL multithreading) o/MTd
/MT
(multithreading). In caso contrario, non definito._NATIVE_WCHAR_T_DEFINED
Definito come 1 quando è impostata l'opzione del/Zc:wchar_t
compilatore. In caso contrario, non definito._OPENMP
Definito come valore letterale intero 200203, se è impostata l'opzione del/openmp
compilatore (Abilita supporto OpenMP 2.0). Questo valore rappresenta la data della specifica OpenMP implementata da MSVC. In caso contrario, non definito.// _OPENMP_dir.cpp // compile with: /openmp #include <stdio.h> int main() { printf("%d\n", _OPENMP); }
_PREFAST_
Definito come 1 quando è impostata l'opzione del/analyze
compilatore. In caso contrario, non definito.__SANITIZE_ADDRESS__
Disponibile a partire da Visual Studio 2019 versione 16.9. Definito come 1 quando è impostata l'opzione del/fsanitize=address
compilatore. In caso contrario, non definito.__TIMESTAMP__
Definito come valore letterale stringa che contiene la data e l'ora dell'ultima modifica del file di origine corrente, nel formato abbreviato di lunghezza costante restituito dalla funzione CRTasctime
,Fri 19 Aug 13:32:58 2016
ad esempio . Questa macro è sempre definita._VC_NODEFAULTLIB
Definito come 1 quando è impostata l'opzione del/Zl
compilatore (Omit Default Library Name). In caso contrario, non definito._WCHAR_T_DEFINED
Definito come 1 quando è impostata l'opzione del compilatore predefinita/Zc:wchar_t
. La_WCHAR_T_DEFINED
macro è definita ma non ha alcun valore se l'opzione del/Zc:wchar_t-
compilatore è impostata ewchar_t
viene definita in un file di intestazione di sistema incluso nel progetto. In caso contrario, non definito._WIN32
Definito come 1 quando la destinazione di compilazione è ARM a 32 bit, ARM a 64 bit, x86 o x64. In caso contrario, non definito._WIN64
Definito come 1 quando la destinazione di compilazione è ARM a 64 bit o x64. In caso contrario, non definito._WINRT_DLL
Definito come 1 quando viene compilato come C++ e entrambe/ZW
(compilazione di Windows Runtime) e/LD
o/LDd
le opzioni del compilatore sono impostate. In caso contrario, non definito.
Nessuna macro del preprocessore che identifica la versione della libreria ATL o MFC è predefinita dal compilatore. Le intestazioni della libreria ATL e MFC definiscono internamente queste macro di versione. Non sono definiti nelle direttive del preprocessore effettuate prima dell'inserimento dell'intestazione obbligatoria.
_ATL_VER
Definito in<atldef.h>
come valore letterale integer che codifica il numero di versione ATL._MFC_VER
Definito in<afxver_.h>
come valore letterale integer che codifica il numero di versione MFC.
Vedi anche
Macro (C/C++)
Operatori del preprocessore
Direttive del preprocessore