Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
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.
__cplusplusDé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#linedirective. 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/Zacompilateur est spécifiée. À compter de Visual Studio 2022 version 17.2, elle est définie comme 1 lorsqu’elle est compilée en C et si l’option du/Zc:__STDC__compilateur est spécifiée. 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/stdoptions 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/stdoptions 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/stdoptions 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/stdoptions C11 ou C17 est spécifiée.__STDC_VERSION__Définie lorsqu’elle est compilée en tant que C et que l’une/stddes options C11 ou C17 est spécifiée. Il s’étend pour201112L/std:c11, et201710Lpour/std:c17.__STDCPP_DEFAULT_NEW_ALIGNMENT__Quand/std:c17ou une version ultérieure est spécifiée, cette macro s’étend sur unsize_tlitté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_ARCHDé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_ARCHest 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:ATOMcompilateur 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:AVXoptions , ,/arch:AVX512/arch:AVX2ou/arch:AVX10.1/arch:AVX10.2compilateur 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:AVX2,/arch:AVX512ou/arch:AVX10.1/arch:AVX10.2compilateur est définie et que la cible du compilateur est x86 ou x64. Sinon, non défini.__AVX512BW__Défini comme 1 lorsque l’option/arch:AVX512,/arch:AVX10.1ou/arch:AVX10.2compilateur est définie et que la cible du compilateur est x86 ou x64. Sinon, non défini.__AVX512CD__Défini comme 1 lorsque l’option/arch:AVX512,/arch:AVX10.1ou/arch:AVX10.2compilateur est définie et que la cible du compilateur est x86 ou x64. Sinon, non défini.__AVX512DQ__Défini comme 1 lorsque l’option/arch:AVX512,/arch:AVX10.1ou/arch:AVX10.2compilateur est définie et que la cible du compilateur est x86 ou x64. Sinon, non défini.__AVX512F__Défini comme 1 lorsque l’option/arch:AVX512,/arch:AVX10.1ou/arch:AVX10.2compilateur est définie et que la cible du compilateur est x86 ou x64. Sinon, non défini.__AVX512VL__Défini comme 1 lorsque l’option/arch:AVX512,/arch:AVX10.1ou/arch:AVX10.2compilateur est définie 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 ou/arch:AVX10.2l’option/arch:AVX10.1du compilateur est définie et que la cible du compilateur est x86 ou x64. Sinon, non défini._CHAR_UNSIGNEDDéfini comme 1 si le type par défautcharn’est pas signé. Cette valeur est définie lorsque l’option/Jdu compilateur (type char par défaut n’est pas signé) est définie. Sinon, non défini.__CLR_VERDé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ùMest la version principale du runtime,mmest la version mineure du runtime etbbbbbest le numéro de build.__CLR_VERest défini si l’option du/clrcompilateur est définie. Sinon, non défini.// clr_ver.cpp // compile with: /clr using namespace System; int main() { Console::WriteLine(__CLR_VER); }_CONTROL_FLOW_GUARDDéfini comme 1 lorsque l’option du/guard:cfcompilateur (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. LeexampleClassconstructeur 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_cliDéfinie comme valeur littérale entière 200406 lorsqu’elle est compilée en tant que C++ et qu’une/clroption de compilateur est définie. Sinon, non défini. Lorsqu’elle est définie,__cplusplus_cliest 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_winrtDéfinie comme valeur littérale entière 201009 lorsqu’elle est compilée en tant que C++ et que l’option du/ZWcompilateur (compilation Windows Runtime) est définie. Sinon, non défini._CPPRTTIDéfinie comme 1 si l’option du compilateur (Activer les/GRinformations de type d’exécution) est définie. Sinon, non défini._CPPUNWINDDéfinie comme 1 si une ou plusieurs des options du compilateur (Activer la/GX(Compilation Common Language Runtime) ou/clr(Modèle de gestion des exceptions) sont définies. Sinon, non défini._DEBUGDéfini comme 1 lorsque l’option/LDd,/MDdou/MTdcompilateur est définie. Sinon, non défini._DLLDéfini comme 1 lorsque l’option du/MDcompilateur 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/EPl’option/Pdu compilateur.Cet exemple utilise les macros ,
__FUNCDNAME__et__FUNCSIG__les__FUNCTION__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/EPl’option/Pdu compilateur. Lorsqu’elle est compilée pour une cible 64 bits, la convention d’appel est__cdeclpar 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/EPl’option/Pdu compilateur. Pour obtenir un exemple d’utilisation, consultez la__FUNCDNAME__macro._INTEGRAL_MAX_BITSDéfini comme valeur littérale entière 64, taille maximale (en bits) pour un type intégral non-vecteur. 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_VOLATILEDéfini comme 1 si l’option du/volatile:isocompilateur est définie. Sinon, non défini._KERNEL_MODEDéfini comme 1 si l’option du compilateur (Créer le/kernelmode noyau binaire) est définie. Sinon, non défini._M_AMD64Défini comme valeur littérale entière 100 pour les compilations qui ciblent des processeurs x64 ou des ARM64EC. Sinon, non défini._M_ARMDé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_ARMV7VEDéfini comme 1 lorsque l’option du/arch:ARMv7VEcompilateur est définie pour les compilations qui ciblent les processeurs ARM. Sinon, non défini._M_ARM_FPDéfini en tant que valeur littérale entière qui indique l’option/archdu 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:VFPv4elle a été définie.Pour plus d’informations, consultez
/arch(ARM).
_M_ARM64Défini comme 1 pour les compilations qui ciblent ARM64. Sinon, non défini._M_ARM64ECDéfini comme 1 pour les compilations qui ciblent ARM64EC. Sinon, non défini._M_CEEDéfinie comme 001 si une/clroption de compilateur (compilation Common Language Runtime) est définie. Sinon, non défini._M_CEE_PUREDéconseillé depuis Visual Studio 2015. Défini comme 001 si l’option du/clr:purecompilateur est définie. Sinon, non défini._M_CEE_SAFEDéconseillé depuis Visual Studio 2015. Défini comme 001 si l’option du/clr:safecompilateur est définie. Sinon, non défini._M_FP_CONTRACTDisponible à partir de Visual Studio 2022. Défini comme 1 si l’option/fp:contractdu compilateur est/fp:fastdéfinie. Sinon, non défini._M_FP_EXCEPTDéfini comme 1 si l’option/fp:exceptdu compilateur est/fp:strictdéfinie. Sinon, non défini._M_FP_FASTDéfini comme 1 si l’option du/fp:fastcompilateur est définie. Sinon, non défini._M_FP_PRECISEDéfini comme 1 si l’option du/fp:precisecompilateur est définie. Sinon, non défini._M_FP_STRICTDéfini comme 1 si l’option du/fp:strictcompilateur est définie. Sinon, non défini._M_IX86Dé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_FPDéfini en tant que valeur littérale entière qui indique l’option du/archcompilateur 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:IA32compilateur a été définie.1 si l’option du
/arch:SSEcompilateur a été définie.2 si l’option
/arch:SSE2, ,/arch:AVX512/arch:AVX/arch:AVX2, ou/arch:AVX10.1/arch:AVX10.2compilateur a été définie. Cette valeur est la valeur par défaut si aucune/archoption de compilateur n’a été spécifiée. Quand/arch:AVXelle est spécifiée, la macro__AVX__est également définie. Quand/arch:AVX2elle est spécifiée, les deux__AVX__et__AVX2__sont également définies. Quand/arch:AVX512est spécifié,__AVX__, ,__AVX2____AVX512BW__,__AVX512CD__,__AVX512DQ__, ,__AVX512F__et__AVX512VL__sont également définis. Quand/arch:AVX10.1ou/arch:AVX10.2est spécifié,__AVX__, ,__AVX2__,__AVX512BW____AVX512CD__,__AVX512DQ__, ,__AVX512F__et__AVX512VL____AVX10_VER__sont également définis.Pour plus d’informations, consultez
/arch(x86).
_M_X64Défini comme valeur littérale entière 100 pour les compilations qui ciblent des processeurs x64 ou des ARM64EC. Sinon, non défini._MANAGEDDéfini comme 1 lorsque l’option du/clrcompilateur est définie. Sinon, non défini._MSC_BUILDDé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_BUILDmacro est 1. Cette macro est toujours définie._MSC_EXTENSIONSDéfini comme 1 si l’option du compilateur on-by-default/Ze(Enable Language Extensions) est définie. Sinon, non défini._MSC_FULL_VERDé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_VERest 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_VERde les distinguer._MSC_VERDé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_VER1700. 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 // . . . #endifPour 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_LANGDé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 valeur201402Llittérale entière par défaut ou lorsque l’option du/std:c++14compilateur est spécifiée. La macro est définie201703Lsi l’option du/std:c++17compilateur est spécifiée. La macro est définie202002Lsi l’option du/std:c++20compilateur est spécifiée. Elle est définie sur une valeur supérieure, non spécifiée lorsque l’option/std:c++latestest spécifiée. Sinon, la macro n’est pas définie. Les_MSVC_LANGoptions du compilateur macro et/std(Spécifier la version standard du langage) sont disponibles à partir de Visual Studio 2015 Update 3.__MSVC_RUNTIME_CHECKSDéfini comme 1 lorsque l’une des options du/RTCcompilateur 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:preprocessorde 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:preprocessorde 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:preprocessorremplace 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
_MTDéfini comme 1 quand/MDou/MDd(DLL multithread) ou/MT/MTd(multithreaded) est spécifié. Sinon, non défini._NATIVE_WCHAR_T_DEFINEDDéfini comme 1 lorsque l’option du/Zc:wchar_tcompilateur est définie. Sinon, non défini._OPENMPDéfini en tant que littéral entier 200203, si l’option/openmpdu 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/analyzecompilateur 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=addresscompilateur 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 2016Cette macro est toujours définie._VC_NODEFAULTLIBDéfini comme 1 lorsque l’option du compilateur (omettre le/Zlnom de la bibliothèque par défaut) est définie. Sinon, non défini._WCHAR_T_DEFINEDDéfini comme 1 lorsque l’option du compilateur par défaut/Zc:wchar_test définie. La_WCHAR_T_DEFINEDmacro est définie, mais n’a aucune valeur si l’option du/Zc:wchar_t-compilateur est définie etwchar_test définie dans un fichier d’en-tête système inclus dans votre projet. Sinon, non défini._WIN32Défini comme 1 lorsque la cible de compilation est ARM 32 bits, ARM 64 bits, x86, x64 ou ARM64EC. Sinon, non défini._WIN64Défini comme 1 lorsque la cible de compilation est ARM, x64 ou ARM64EC 64 bits. Sinon, non défini._WINRT_DLLDéfini comme 1 lorsqu’il est compilé en C++ et à la fois/ZW(compilation Windows Runtime) et/LDou/LDdles 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_VERDéfini en<atldef.h>tant que littéral entier qui encode le numéro de version ATL._MFC_VERDé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