Macros prédéfinies
Répertorie les macros de préprocesseur d'implémentation ANSI/ISO C99 et Microsoft C++ prédéfinies.
Le compilateur reconnaît les macros de préprocesseur prédéfinies ANSI/ISO C99 C. Par ailleurs, l'implémentation de Microsoft C++ en fournit plusieurs autres. Ces macros de préprocesseur ne prennent pas d'arguments et ne peuvent pas être redéfinies. Certaines macros prédéfinies répertoriées dans cet article sont définies avec plusieurs valeurs.
Macros prédéfinies compatibles ANSI
Macro |
Description |
---|---|
__DATE__ |
Date de compilation du fichier source actuel. La date est un littéral de chaîne au format Mmm jj aaaa. Le nom du mois Mmm est le même que pour les dates générées par la fonction de bibliothèque asctime déclarée dans TIME.H. |
__FILE__ |
Nom du fichier source actuel. __FILE__ se développe en un littéral de chaîne. Pour vous assurer que le chemin d'accès complet au fichier s'affiche, utilisez /FC (Chemin d'accès complet du fichier de code source dans les diagnostics). |
__func__ |
Retourne le nom non qualifié et sans ornement de la fonction englobante sous la forme d'un tableau de caractères.
|
__LINE__ |
Numéro de ligne dans le fichier source actuel. Le numéro de ligne est un littéral d'entier décimal. Il peut être modifié au moyen d'une directive #line. |
__STDC__ |
Indique la mise en conformité avec la norme ANSI/ISO C99. Macro définie comme constante de littéral d'entier 1 seulement si l'option /Za du compilateur est donnée et que vous ne compilez pas le code C++ ; sinon, la macro est non définie. |
__TIME__ |
Heure de compilation la plus récente du fichier source actuel. L'heure est un littéral de chaîne au format hh:mm:ss. |
__TIMESTAMP__ |
Date et heure de la dernière modification du fichier source actuel, exprimées en tant que littéral de chaîne au format Jjj Mmm Date hh:mm:ss aaaa, où Jjj est le jour abrégé de la semaine et Date est un entier compris entre 1 et 31. |
Macros prédéfinies spécifiques à Microsoft
Macro |
Description |
---|---|
_ATL_VER |
Définit la version ATL, encodée sous la forme d'un littéral d'entier. |
__AVX__ |
Macro définie quand /arch:AVX ou /arch:AVX2 est spécifié. |
__AVX2__ |
Macro définie quand /arch:AVX2 est spécifié. |
_CHAR_UNSIGNED |
Le type char par défaut est non signé. Macro définie quand /J est spécifié. |
__CLR_VER |
Définit la version du Common Langage Runtime utilisée lorsque l'application a été compilée. La valeur retournée est un littéral d'entier codé au format suivant : Mmmbbbbb où,
|
__cplusplus_cli |
Macro définie lorsque vous compilez avec /clr, /clr:pure ou /clr:safe. La valeur de __cplusplus_cli est le littéral d'entier 200406. __cplusplus_cli est appliqué dans l'unité de traduction.
|
__cplusplus_winrt |
Macro définie lorsque vous utilisez l'option /ZW pour compiler. La valeur de __cplusplus_winrt est le littéral d'entier 201009. |
__COUNTER__ |
Se développe en un littéral d'entier commençant par 0 et s'incrémentant de 1 chaque fois qu'il est utilisé dans un fichier source ou dans les en-têtes inclus du fichier source. __COUNTER__ conserve son état lorsque vous utilisez des en-têtes précompilés. L'exemple suivant utilise __COUNTER__ pour assigner des identificateurs uniques à trois objets différents du même type. Tout d'abord, supposez la définition de classe suivante. Le constructeur accepte un entier comme paramètre.
Dans main, l'application déclare trois objets de type exampleClass, en utilisant __COUNTER__ comme paramètre d'identificateur unique.
|
__cplusplus |
Définie pour les programmes C++ uniquement. |
_CPPRTTI |
Définie pour le code compilé avec /GR (Activer les informations de type au moment de l'exécution). |
_CPPUNWIND |
Définie pour le code compilé à l'aide de l'un des indicateurs /EH (Modèle de gestion des exceptions). |
_DEBUG |
|
_DLL |
Définie quand l'option /MD ou /MDd (DLL multithread) est spécifiée. |
__FUNCDNAME__ |
Valide uniquement dans une fonction. Définit le nom décoré de la fonction englobante sous forme de littéral de chaîne. __FUNCDNAME__ n'est pas développée si vous utilisez l'option /EP ou /P du compilateur. L'exemple suivant utilise les macros __FUNCDNAME__, __FUNCSIG__ et __FUNCTION__ pour afficher les informations relatives à une fonction.
|
__FUNCSIG__ |
Valide uniquement dans une fonction. Définit la signature de la fonction englobante sous forme de littéral de chaîne. __FUNCSIG__ n'est pas développée si vous utilisez l'option /EP ou /P du compilateur. Sur un système d'exploitation 64 bits, la convention d'appel par défaut est __cdecl. Pour obtenir un exemple, consultez __FUNCDNAME__. |
__FUNCTION__ |
Valide uniquement dans une fonction. Définit le nom non décoré de la fonction englobante sous forme de littéral de chaîne. __FUNCTION__ n'est pas développée si vous utilisez l'option /EP ou /P du compilateur. Pour obtenir un exemple, consultez __FUNCDNAME__. |
_INTEGRAL_MAX_BITS |
Indique la taille maximale (en bits) d'un type intégral sous forme de littéral d'entier.
|
_M_AMD64 |
Définie pour les compilations qui ciblent des processeurs x64. |
_M_ARM |
Définie pour les compilations qui ciblent des processeurs ARM. |
_M_CEE |
Définie pour une compilation qui utilise n'importe quelle forme de /clr (/clr:oldSyntax, /clr:safe, par exemple). |
_M_CEE_PURE |
Définie pour une compilation qui utilise /clr:pure. |
_M_CEE_SAFE |
Définie pour une compilation qui utilise /clr:safe. |
_M_IX86 |
Définie pour les compilations qui ciblent des processeurs x86. Non définie pour les processeurs x64. |
_M_ARM_FP |
Se développe en une valeur littérale entière indiquant l'option de compilateur /arch qui a été utilisée :
|
_M_IX86_FP |
Se développe en une valeur littérale entière indiquant l'option de compilateur /arch qui a été utilisée :
|
_M_X64 |
Définie pour les compilations qui ciblent des processeurs x64. |
_MANAGED |
Définie pour avoir la valeur 1 lorsque /clr est spécifié. |
_MFC_VER |
Définit la version MFC, encodée sous la forme d'un littéral d'entier. |
_MSC_BUILD |
Correspond à un littéral d'entier qui contient le numéro de révision figurant dans le numéro de version du compilateur. Le numéro de révision est le quatrième élément du numéro de version délimité par des points. Par exemple, si le numéro de version du compilateur Visual C++ est 15.00.20706.01, la macro _MSC_BUILD prend la valeur 1. |
_MSC_EXTENSIONS |
Cette macro est définie lorsque vous compilez avec l'option /Ze du compilateur (par défaut). Sa valeur, une fois définie, est 1. |
_MSC_FULL_VER |
Correspond à un littéral d'entier qui code les numéros de version majeure, de version mineure et de build figurant dans le numéro de version du compilateur. Le numéro de version majeure est le premier composant du numéro de version délimité par des points, le numéro de version mineure est le deuxième composant et le numéro de build est le troisième. Par exemple, si le numéro de version du compilateur Visual C++ est 15.00.20706.01, la macro _MSC_FULL_VER prend la valeur 150020706. Tapez cl /? sur la ligne de commande pour afficher le numéro de version du compilateur. |
_MSC_VER |
Correspond à un littéral d'entier qui code les numéros de version majeure et de version mineure figurant dans le numéro de version du compilateur. Le numéro de version majeure est le premier composant du numéro de version délimité par des points et le numéro de version mineure est le deuxième composant. Par exemple, si le numéro de version du compilateur Visual C++ est 17.00.51106.1, la macro _MSC_VER prend la valeur 1700. Tapez cl /? sur la ligne de commande pour afficher le numéro de version du compilateur. |
__MSVC_RUNTIME_CHECKS |
Définie lorsque l'une des options /RTC du compilateur est spécifiée. |
_MT |
Définie lorsque /MD ou /MDd (DLL multithread) ou /MT ou /MTd (Multithread) est spécifié. |
_NATIVE_WCHAR_T_DEFINED |
Définie lorsque /Zc:wchar_t est utilisé. |
_OPENMP |
Définie pendant la compilation avec /openmp, retourne un littéral d'entier représentant la date de la spécification OpenMP implémentée par Visual C++.
|
_VC_NODEFAULTLIB |
Définie lorsque /Zl est utilisé ; consultez /Zl (Omettre le nom de la bibliothèque par défaut) pour plus d'informations. |
_WCHAR_T_DEFINED |
Définie lorsque /Zc:wchar_t est utilisé ou que wchar_t est défini dans un fichier d'en-tête système inclus dans votre projet. |
_WIN32 |
Définie pour les applications Win32 et Win64. Toujours défini. |
_WIN64 |
Définie pour les applications Win64. |