Macros prédéfinies
Le compilateur Microsoft C/C++ (MSVC) prédéfinit certaines macros de préprocesseur en fonction du langage (C ou C++), de la cible de compilation et des options de compilateur choisies.
MSVC prend en charge les macros de préprocesseur prédéfinies requises par les normes ANSI/ISO C99, C11 et C17 et ISO C++14, C++17 et C++20. L’implémentation prend également en charge plusieurs macros de préprocesseur spécifiques à Microsoft.
Certaines macros sont définies uniquement pour des environnements de build ou des options de compilateur spécifiques. Sauf indication contraire, les macros sont définies dans une unité de traduction comme si elles étaient spécifiées en tant qu’arguments /D
d’option du compilateur. Lorsqu’il est défini, le préprocesseur développe les macros de leurs valeurs spécifiées avant la compilation. Les macros prédéfinies ne prennent aucun argument et ne peuvent pas être redéfinies.
Identificateur prédéfini standard
Le compilateur prend en charge cet identificateur prédéfini spécifié par ISO C99 et ISO C++11.
__func__
Nom non qualifié et non qualifié de la fonction englobante en tant que tableau statique statique local de fonction dechar
.void example() { printf("%s\n", __func__); } // prints "example"
Macros prédéfinies standard
Le compilateur prend en charge ces macros prédéfinies spécifiées par les normes ISO C99, C11, C17 et ISO C++17.
__cplusplus
Défini en tant que valeur littérale entière lorsque l’unité de traduction est compilée en C++. Sinon, non défini.__DATE__
Date de compilation du fichier source actuel. La date est un littéral de chaîne de longueur constante de la forme Mmm dd aaaa. Le nom de mois Mmm est identique au nom du mois abrégé généré par la fonction asctime C Runtime Library (CRT). Le premier caractère de date dd est un espace si la valeur est inférieure à 10. Cette macro est toujours définie.__FILE__
Nom du fichier source actuel.__FILE__
s’étend sur un littéral de chaîne de caractères. Pour vous assurer que le chemin d’accès complet au fichier est affiché, utilisez/FC
(chemin d’accès complet du fichier de code source dans diagnostics). Cette macro est toujours définie.__LINE__
Défini comme numéro de ligne entière dans le fichier source actuel. La valeur de cette macro peut être modifiée à l’aide d’une#line
directive. Le type intégral de la valeur de__LINE__
peut varier en fonction du contexte. Cette macro est toujours définie.__STDC__
Défini comme 1 lorsqu’il est compilé en C et si l’option du/Za
compilateur est spécifiée. À compter de Visual Studio 2022 version 17.2, il est défini comme 1 lorsqu’il est compilé en C et si l’option ou/std:c17
le/std:c11
compilateur est spécifié. Sinon, non défini.__STDC_HOSTED__
Défini comme 1 si l’implémentation est une implémentation hébergée, celle qui prend en charge l’ensemble de la bibliothèque standard requise. Sinon, défini comme 0.__STDC_NO_ATOMICS__
Défini comme 1 si l’implémentation ne prend pas en charge les atomiques standard facultatifs. L’implémentation MSVC la définit comme 1 lorsqu’elle est compilée en tant que C et l’une des/std
options C11 ou C17 est spécifiée.__STDC_NO_COMPLEX__
Défini comme 1 si l’implémentation ne prend pas en charge les nombres complexes standard facultatifs. L’implémentation MSVC la définit comme 1 lorsqu’elle est compilée en tant que C et l’une des/std
options C11 ou C17 est spécifiée.__STDC_NO_THREADS__
Défini comme 1 si l’implémentation ne prend pas en charge les threads standard facultatifs. L’implémentation MSVC la définit comme 1 lorsqu’elle est compilée en tant que C et l’une des/std
options C11 ou C17 est spécifiée.__STDC_NO_VLA__
Défini comme 1 si l’implémentation ne prend pas en charge les tableaux de longueur variable standard. L’implémentation MSVC la définit comme 1 lorsqu’elle est compilée en tant que C et l’une des/std
options C11 ou C17 est spécifiée.__STDC_VERSION__
Définie lorsqu’elle est compilée en tant que C et que l’une/std
des options C11 ou C17 est spécifiée. Il s’étend pour201112L
/std:c11
, et201710L
pour/std:c17
.__STDCPP_DEFAULT_NEW_ALIGNMENT__
Quand/std:c17
ou une version ultérieure est spécifiée, cette macro s’étend sur unsize_t
littéral qui a la valeur de l’alignement garanti par un appel à l’alignement sans connaissanceoperator new
. Les alignements plus volumineux sont passés à une surcharge prenant en charge l’alignement, paroperator new(std::size_t, std::align_val_t)
exemple . Pour plus d’informations, consultez/Zc:alignedNew
(allocation sur-alignée C++17).__STDCPP_THREADS__
Défini comme 1 si et uniquement si un programme peut avoir plusieurs threads d’exécution et compilé en tant que C++. Sinon, non défini.__TIME__
Heure de traduction de l’unité de traduction prétraite. L’heure est un littéral de chaîne de caractères de la forme hh :mm :ss, identique à l’heure retournée par la fonction asctime CRT. Cette macro est toujours définie.
Macros prédéfinies spécifiques à Microsoft
MSVC prend en charge d’autres macros prédéfinies :
__ARM_ARCH
Défini en tant que littéral entier qui représente la version de l’architecture ARM. La valeur est définie comme 8 pour l’architecture Armv8-A. Pour la version 8.1 et ultérieure, la valeur est mise à l’échelle pour les versions mineures, telles que X.Y, à l’aide de la formule X * 100 + Y telle que définie par l’extension de langage ARM C. Par exemple, pour Armv8.1,__ARM_ARCH
est 8 * 100 + 1 ou 801. Pour définir la version de l’architecture ARM, consultez/arch (ARM64)
. Cette macro a été introduite dans Visual Studio 2022 version 17.10.__ATOM__
Défini comme 1 lorsque l’option du/favor:ATOM
compilateur est définie et que la cible du compilateur est x86 ou x64. Sinon, non défini.__AVX__
Défini comme 1 lorsque les/arch:AVX
options ,/arch:AVX2
/arch:AVX512
ou/arch:AVX10.1
compilateur sont définies et que la cible du compilateur est x86 ou x64. Sinon, non défini.__AVX2__
Défini comme 1 lorsque l’option ,/arch:AVX512
ou/arch:AVX10.1
le/arch:AVX2
compilateur est défini et que la cible du compilateur est x86 ou x64. Sinon, non défini.__AVX512BW__
Défini comme 1 lorsque l’option ou/arch:AVX10.1
le/arch:AVX512
compilateur est défini et que la cible du compilateur est x86 ou x64. Sinon, non défini.__AVX512CD__
Défini comme 1 lorsque l’option ou/arch:AVX10.1
le/arch:AVX512
compilateur est défini et que la cible du compilateur est x86 ou x64. Sinon, non défini.__AVX512DQ__
Défini comme 1 lorsque l’option ou/arch:AVX10.1
le/arch:AVX512
compilateur est défini et que la cible du compilateur est x86 ou x64. Sinon, non défini.__AVX512F__
Défini comme 1 lorsque l’option ou/arch:AVX10.1
le/arch:AVX512
compilateur est défini et que la cible du compilateur est x86 ou x64. Sinon, non défini.__AVX512VL__
Défini comme 1 lorsque l’option ou/arch:AVX10.1
le/arch:AVX512
compilateur est défini et que la cible du compilateur est x86 ou x64. Sinon, non défini.__AVX10_VER__
Défini en tant qu’entier qui représente la version d’AVX10 lorsque l’option/arch:AVX10.1
du compilateur est définie et que la cible du compilateur est x86 ou x64. Sinon, non défini._CHAR_UNSIGNED
Défini comme 1 si le type par défautchar
n’est pas signé. Cette valeur est définie lorsque l’option/J
du compilateur (type char par défaut n’est pas signé) est définie. Sinon, non défini.__CLR_VER
Défini en tant que littéral entier qui représente la version du Common Language Runtime (CLR) utilisée pour compiler l’application. La valeur est encodée dans le formulaireMmmbbbbb
, oùM
est la version principale du runtime,mm
est la version mineure du runtime etbbbbb
est le numéro de build.__CLR_VER
est défini si l’option du/clr
compilateur est définie. Sinon, non défini.// clr_ver.cpp // compile with: /clr using namespace System; int main() { Console::WriteLine(__CLR_VER); }
_CONTROL_FLOW_GUARD
Défini comme 1 lorsque l’option du/guard:cf
compilateur (Activer Control Flow Guard) est définie. Sinon, non défini.__COUNTER__
S’étend sur un littéral entier qui commence à 0. La valeur incrémente de 1 chaque fois qu’elle est utilisée dans un fichier source ou dans les en-têtes inclus du fichier source.__COUNTER__
mémorise son état lorsque vous utilisez des en-têtes précompilés. Cette macro est toujours définie.Cet exemple utilise
__COUNTER__
pour affecter des identificateurs uniques à trois objets différents du même type. LeexampleClass
constructeur prend un entier comme paramètre. Dansmain
, l’application déclare trois objets de typeexampleClass
, à l’aide__COUNTER__
du paramètre d’identificateur unique :// 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
Définie comme valeur littérale entière 200406 lorsqu’elle est compilée en tant que C++ et qu’une/clr
option de compilateur est définie. Sinon, non défini. Lorsqu’elle est définie,__cplusplus_cli
est en vigueur dans toute l’unité de traduction.// 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
Définie comme valeur littérale entière 201009 lorsqu’elle est compilée en tant que C++ et que l’option du/ZW
compilateur (compilation Windows Runtime) est définie. Sinon, non défini._CPPRTTI
Définie comme 1 si l’option du compilateur (Activer les/GR
informations de type d’exécution) est définie. Sinon, non défini._CPPUNWIND
Définie comme 1 si une ou plusieurs des options du compilateur (Activer la/GX
gestion des exceptions),/clr
(Compilation Common Language Runtime) ou/EH
(Modèle de gestion des exceptions) sont définies. Sinon, non défini._DEBUG
Défini comme 1 lorsque l’option/LDd
,/MDd
ou/MTd
compilateur est définie. Sinon, non défini._DLL
Défini comme 1 lorsque l’option du/MD
compilateur ou/MDd
(DLL multithread) est définie. Sinon, non défini.__FUNCDNAME__
Défini en tant que littéral de chaîne qui contient le nom décoré de la fonction englobante. La macro est définie uniquement dans une fonction. La__FUNCDNAME__
macro n’est pas développée si vous utilisez l’option ou/P
l’option/EP
du compilateur.Cet exemple utilise les macros ,
__FUNCSIG__
et__FUNCTION__
les__FUNCDNAME__
macros pour afficher les informations de fonction.// 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__
Défini en tant que littéral de chaîne qui contient la signature de la fonction englobante. La macro est définie uniquement dans une fonction. La__FUNCSIG__
macro n’est pas développée si vous utilisez l’option ou/P
l’option/EP
du compilateur. Lorsqu’elle est compilée pour une cible 64 bits, la convention d’appel est__cdecl
par défaut. Pour obtenir un exemple d’utilisation, consultez la__FUNCDNAME__
macro.__FUNCTION__
Défini en tant que littéral de chaîne qui contient le nom non décodé de la fonction englobante. La macro est définie uniquement dans une fonction. La__FUNCTION__
macro n’est pas développée si vous utilisez l’option ou/P
l’option/EP
du compilateur. Pour obtenir un exemple d’utilisation, consultez la__FUNCDNAME__
macro._INTEGRAL_MAX_BITS
Définie comme valeur littérale entière 64, taille maximale (en bits) pour un type intégral non vectoriel. Cette macro est toujours définie.// integral_max_bits.cpp #include <stdio.h> int main() { printf("%d\n", _INTEGRAL_MAX_BITS); }
__INTELLISENSE__
Défini comme 1 lors d’une transmission du compilateur IntelliSense dans l’IDE Visual Studio. Sinon, non défini. Vous pouvez utiliser cette macro pour protéger le code que le compilateur IntelliSense ne comprend pas, ou l’utiliser pour basculer entre la build et le compilateur IntelliSense. Pour plus d’informations, consultez Conseils de résolution des problèmes de lenteur IntelliSense._ISO_VOLATILE
Défini comme 1 si l’option du/volatile:iso
compilateur est définie. Sinon, non défini._KERNEL_MODE
Défini comme 1 si l’option du compilateur (Créer le/kernel
mode noyau binaire) est définie. Sinon, non défini._M_AMD64
Défini comme valeur littérale entière 100 pour les compilations qui ciblent des processeurs x64 ou des ARM64EC. Sinon, non défini._M_ARM
Défini comme valeur littérale entière 7 pour les compilations qui ciblent des processeurs ARM. Non défini pour ARM64, ARM64EC et d’autres cibles._M_ARM_ARMV7VE
Défini comme 1 lorsque l’option du/arch:ARMv7VE
compilateur est définie pour les compilations qui ciblent les processeurs ARM. Sinon, non défini._M_ARM_FP
Défini en tant que valeur littérale entière qui indique l’option/arch
du compilateur définie pour les cibles de processeur ARM. Sinon, non défini.Valeur de la plage 30-39 si aucune option ARM n’a
/arch
été spécifiée, indiquant l’architecture par défaut pour ARM a été définie (VFPv3
).Valeur de la plage 40-49 si
/arch:VFPv4
elle a été définie.Pour plus d’informations, consultez
/arch
(ARM).
_M_ARM64
Défini comme 1 pour les compilations qui ciblent ARM64. Sinon, non défini._M_ARM64EC
Défini comme 1 pour les compilations qui ciblent ARM64EC. Sinon, non défini._M_CEE
Définie comme 001 si une/clr
option de compilateur (compilation Common Language Runtime) est définie. Sinon, non défini._M_CEE_PURE
Déconseillé depuis Visual Studio 2015. Défini comme 001 si l’option du/clr:pure
compilateur est définie. Sinon, non défini._M_CEE_SAFE
Déconseillé depuis Visual Studio 2015. Défini comme 001 si l’option du/clr:safe
compilateur est définie. Sinon, non défini._M_FP_CONTRACT
Disponible à partir de Visual Studio 2022. Défini comme 1 si l’option/fp:contract
du compilateur est/fp:fast
définie. Sinon, non défini._M_FP_EXCEPT
Défini comme 1 si l’option/fp:except
du compilateur est/fp:strict
définie. Sinon, non défini._M_FP_FAST
Défini comme 1 si l’option du/fp:fast
compilateur est définie. Sinon, non défini._M_FP_PRECISE
Défini comme 1 si l’option du/fp:precise
compilateur est définie. Sinon, non défini._M_FP_STRICT
Défini comme 1 si l’option du/fp:strict
compilateur est définie. Sinon, non défini._M_IX86
Défini comme valeur littérale entière 600 pour les compilations qui ciblent des processeurs x86. Cette macro n’est pas définie pour les cibles de compilation x64 ou ARM._M_IX86_FP
Défini en tant que valeur littérale entière qui indique l’option du/arch
compilateur définie ou la valeur par défaut. Cette macro est toujours définie lorsque la cible de compilation est un processeur x86. Sinon, non défini. Quand elle est définie, la valeur est la suivante :0 si l’option du
/arch:IA32
compilateur a été définie.1 si l’option du
/arch:SSE
compilateur a été définie.2 si l’option
/arch:SSE2
, ,/arch:AVX512
/arch:AVX
/arch:AVX2
ou/arch:AVX10.1
compilateur a été définie. Cette valeur est la valeur par défaut si aucune/arch
option de compilateur n’a été spécifiée. Quand/arch:AVX
elle est spécifiée, la macro__AVX__
est également définie. Quand/arch:AVX2
elle est spécifiée, les deux__AVX__
et__AVX2__
sont également définies. Quand/arch:AVX512
est spécifié,__AVX__
, ,__AVX2__
__AVX512BW__
,__AVX512CD__
,__AVX512DQ__
, ,__AVX512F__
et__AVX512VL__
sont également définis. Quand/arch:AVX10.1
est spécifié,__AVX__
, ,__AVX2__
__AVX512BW__
,__AVX512CD__
,__AVX512DQ__
, ,__AVX512F__
et__AVX512VL__
__AVX10_VER__
sont également définis.Pour plus d’informations, consultez
/arch
(x86).
_M_X64
Défini comme valeur littérale entière 100 pour les compilations qui ciblent des processeurs x64 ou des ARM64EC. Sinon, non défini._MANAGED
Défini comme 1 lorsque l’option du/clr
compilateur est définie. Sinon, non défini._MSC_BUILD
Défini en tant que littéral entier qui contient l’élément numéro de révision du numéro de version du compilateur. Le numéro de révision est le dernier élément du numéro de version délimité par période. Par exemple, si le numéro de version du compilateur Microsoft C/C++ est 15.00.20706.01, la_MSC_BUILD
macro est 1. Cette macro est toujours définie._MSC_EXTENSIONS
Défini comme 1 si l’option du compilateur on-by-default/Ze
(Enable Language Extensions) est définie. Sinon, non défini._MSC_FULL_VER
Défini en tant que littéral entier qui encode les éléments principaux, mineurs et de numéros de build du numéro de version du compilateur. Le nombre principal est le premier élément du numéro de version délimité par un point, le numéro secondaire est le deuxième élément et le numéro de build est le troisième élément.Par exemple, si la version du compilateur Microsoft C/C++ est 19.39.33519,
_MSC_FULL_VER
est 193933519. Entrezcl /?
à la ligne de commande pour afficher le numéro de version du compilateur. Cette macro est toujours définie. Pour plus d’informations sur le contrôle de version du compilateur, consultez le contrôle de version du compilateur C++ et spécifiquement les versions de Service à partir de Visual Studio 2017 pour plus d’informations sur Visual Studio 2019 16.8, 16.9, 16.10 et 16.11, ce qui nécessite_MSC_FULL_VER
de les distinguer._MSC_VER
Défini en tant que littéral entier qui encode les éléments de nombre principal et secondaire du numéro de version du compilateur. Le nombre principal est le premier élément du numéro de version délimité par un point et le numéro secondaire est le deuxième élément. Par exemple, si le numéro de version du compilateur Microsoft C/C++ est 17.00.51106.1, la valeur est_MSC_VER
1700. Entrezcl /?
à la ligne de commande pour afficher le numéro de version du compilateur. Cette macro est toujours définie.Pour tester les versions ou mises à jour du compilateur dans une version donnée de Visual Studio ou ultérieure, utilisez l’opérateur
>=
. Vous pouvez l’utiliser dans une directive conditionnelle pour la comparer_MSC_VER
à cette version connue. Si vous avez plusieurs versions mutuellement exclusives à comparer, commandez vos comparaisons dans l’ordre décroissant du numéro de version. Par exemple, ce code recherche les compilateurs publiés dans Visual Studio 2017 et versions ultérieures. Ensuite, il recherche les compilateurs publiés ou après Visual Studio 2015. Ensuite, il recherche tous les compilateurs publiés avant Visual Studio 2015 :#if _MSC_VER >= 1910 // . . . #elif _MSC_VER >= 1900 // . . . #else // . . . #endif
Pour plus d’informations sur Visual Studio 2019 16.8 et 16.9 et 16.10 et 16.11, qui partagent les mêmes versions principales et mineures (et ont donc la même valeur pour
_MSC_VER
), consultez les versions de Service à partir de Visual Studio 2017.Pour plus d’informations sur l’historique du contrôle de version du compilateur et les numéros de version du compilateur et les versions de Visual Studio auxquelles ils correspondent, consultez le contrôle de version du compilateur C++. En outre, version du compilateur Visual C++ sur le blog de l’équipe Microsoft C++.
_MSVC_LANG
Défini en tant que littéral entier qui spécifie la norme de langage C++ ciblée par le compilateur. Seul le code compilé en tant que C++ le définit. La macro est la valeur201402L
littérale entière par défaut ou lorsque l’option du/std:c++14
compilateur est spécifiée. La macro est définie201703L
si l’option du/std:c++17
compilateur est spécifiée. La macro est définie202002L
si l’option du/std:c++20
compilateur est spécifiée. Elle est définie sur une valeur supérieure, non spécifiée lorsque l’option/std:c++latest
est spécifiée. Sinon, la macro n’est pas définie. Les_MSVC_LANG
options du compilateur macro et/std
(Spécifier la version standard du langage) sont disponibles à partir de Visual Studio 2015 Update 3.__MSVC_RUNTIME_CHECKS
Défini comme 1 lorsque l’une des options du/RTC
compilateur est définie. Sinon, non défini._MSVC_TRADITIONAL
:- Disponible à partir de Visual Studio 2017 version 15.8 : défini comme 0 lorsque l’option du compilateur en mode
/experimental:preprocessor
de conformité du préprocesseur est définie. Défini comme 1 par défaut, ou lorsque l’option du/experimental:preprocessor-
compilateur est définie, pour indiquer que le préprocesseur traditionnel est en cours d’utilisation. - Disponible à partir de Visual Studio 2019 version 16.5 : défini comme 0 lorsque l’option du compilateur en mode
/Zc:preprocessor
de conformité du préprocesseur est définie. Défini comme 1 par défaut, ou lorsque l’option du/Zc:preprocessor-
compilateur est définie, pour indiquer que le préprocesseur traditionnel est en cours d’utilisation (essentiellement,/Zc:preprocessor
remplace le déprécié/experimental:preprocessor
).
#if !defined(_MSVC_TRADITIONAL) || _MSVC_TRADITIONAL // Logic using the traditional preprocessor #else // Logic using cross-platform compatible preprocessor #endif
- Disponible à partir de Visual Studio 2017 version 15.8 : défini comme 0 lorsque l’option du compilateur en mode
_MT
Défini comme 1 quand/MD
ou/MDd
(DLL multithread) ou/MTd
/MT
(multithreaded) est spécifié. Sinon, non défini._NATIVE_WCHAR_T_DEFINED
Défini comme 1 lorsque l’option du/Zc:wchar_t
compilateur est définie. Sinon, non défini._OPENMP
Défini en tant que littéral entier 200203, si l’option/openmp
du compilateur (Activer OpenMP 2.0 Support) est définie. Cette valeur représente la date de la spécification OpenMP implémentée par MSVC. Sinon, non défini.// _OPENMP_dir.cpp // compile with: /openmp #include <stdio.h> int main() { printf("%d\n", _OPENMP); }
_PREFAST_
Défini comme 1 lorsque l’option du/analyze
compilateur est définie. Sinon, non défini.__SANITIZE_ADDRESS__
Disponible à partir de Visual Studio 2019 version 16.9. Défini comme 1 lorsque l’option du/fsanitize=address
compilateur est définie. Sinon, non défini.__TIMESTAMP__
Défini en tant que littéral de chaîne qui contient la date et l’heure de la dernière modification du fichier source actuel, dans la forme abrégée de longueur constante retournée par la fonction CRTasctime
, par exemple.Fri 19 Aug 13:32:58 2016
Cette macro est toujours définie._VC_NODEFAULTLIB
Défini comme 1 lorsque l’option du compilateur (omettre le/Zl
nom de la bibliothèque par défaut) est définie. Sinon, non défini._WCHAR_T_DEFINED
Défini comme 1 lorsque l’option du compilateur par défaut/Zc:wchar_t
est définie. La_WCHAR_T_DEFINED
macro est définie, mais n’a aucune valeur si l’option du/Zc:wchar_t-
compilateur est définie etwchar_t
est définie dans un fichier d’en-tête système inclus dans votre projet. Sinon, non défini._WIN32
Défini comme 1 lorsque la cible de compilation est ARM 32 bits, ARM 64 bits, x86 ou x64. Sinon, non défini._WIN64
Défini comme 1 lorsque la cible de compilation est arm 64 bits ou x64. Sinon, non défini._WINRT_DLL
Défini comme 1 lorsqu’il est compilé en C++ et à la fois/ZW
(compilation Windows Runtime) et/LD
ou/LDd
les options du compilateur sont définies. Sinon, non défini.
Aucune macro de préprocesseur qui identifie la version de bibliothèque ATL ou MFC n’est prédéfinie par le compilateur. Les en-têtes de bibliothèque ATL et MFC définissent ces macros de version en interne. Ils ne sont pas définis dans les directives de préprocesseur effectuées avant l’inclusion de l’en-tête requis.
_ATL_VER
Défini en<atldef.h>
tant que littéral entier qui encode le numéro de version ATL._MFC_VER
Défini en<afxver_.h>
tant que littéral entier qui encode le numéro de version MFC.
Voir aussi
Macros (C/C++)
Opérateurs de préprocesseur
Directives de préprocesseur