Partager via


Macros prédéfinies

Répertorie les macros prédéfinies d' ANSI C et d'implémentation Microsoft C++.

Le compilateur identifie les macros prédéfinies ANSI C et l'implémentation Microsoft C++ fournit plusieurs autres.Ces macros ne prennent pas d'arguments et ne peuvent pas être redéfinies.Certaines macros prédéfinies répertoriées ci-dessous sont définies avec plusieurs valeurs.Consultez les tableaux suivants pour plus d'informations.

Macros prédéfinies ANSI- Conforme

Macro

Description

__DATE__

La date de compilation du fichier source actuel.La date est un littéral de chaîne du formulaire Dd Mmm yyyy.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é dans TIME.H.

__FILE__

Le nom du fichier source actuel.__FILE__ se développe vers une chaîne délimitée par des guillemets doubles.Pour s'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 les diagnostics).

__LINE__

Le numéro de ligne dans le fichier source actuel.Le numéro de ligne est une constante entière décimale.Il peut être modifié avec une directive d' #line .

__STDC__

Indique la compatibilité complète avec la norme d' ANSI C.Défini comme constante entière 1 uniquement si l'option du compilateur de /Za est donnée et vous ne compilez pas le code C++ ; sinon n'est pas défini.

__TIME__

La période de compilation la plus récente du fichier source actuel.Le temps est un littéral de chaîne du formulaire hh:mm:ss.

__TIMESTAMP__

Date et heure de la dernière modification du fichier source actuel, exprimée comme un littéral de chaîne dans le formulaire Ddd Mmm Date hh:mm:ss yyyy, où DDD est abrégé du jour de la semaine et de date est un entier de 1 à 31.

Macros prédéfinies spécifiques

Macro

Description

_ATL_VER

Définit la version ATL.

Dans Visual Studio 2010, _ATL_VER est défini en tant que 0x1000.

_CHAR_UNSIGNED

Le type par défaut d' char est non signé.Défini quand /J est spécifié.

__CLR_VER

Définit la version du common langage runtime utilisé lorsque l'application a été compilée.La valeur retournée est au format suivant :

Mmmbbbbb

où,

  • M est la version principale du runtime

  • mm est la version secondaire du runtime

  • bbbbb est le numéro de build.

// clr_ver.cpp
// compile with: /clr
using namespace System;
int main() {
   Console::WriteLine(__CLR_VER);
}

__cplusplus_cli

Défini quand vous compilez avec /clr, /clr:pure, ou /clr:safe.La valeur du __cplusplus_cli est 200406.Le __cplusplus_cli est appliquée dans l'unité de traduction.

// cplusplus_cli.cpp
// compile with: /clr
#include "stdio.h"
int main() {
   #ifdef __cplusplus_cli
      printf("%d\n", __cplusplus_cli);
   #else
      printf("not defined\n");
   #endif
}

__COUNTER__

Se développe vers un entier en commençant par 0 et incrémentant par 1 chaque fois qu'il est utilisé dans un fichier source ou les en-têtes inclus dans le fichier source.__COUNTER__ se souvient 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.

D'abord, prenons la définition de classe suivante.Le constructeur accepte un entier comme paramètre.

Dans le principal, l'application déclare trois objets de type exampleClass, à l'aide de __COUNTER__ comme paramètre d'identificateur unique.

__cplusplus

Défini pour le programme C++ uniquement.

_CPPRTTI

Défini pour le code compilé avec /GR (activez le Run aller-retour Type Information).

_CPPUNWIND

Défini pour le code compilé avec /GX (activer la gestion des exceptions).

_DEBUG

Défini quand vous compilez avec /LDd, /MDd, et /MTd.

_DLL

Défini quand /MD ou /MDd (DLL multithread) est spécifié.

__FUNCDNAME__

Valide que dans une fonction.Définit nom décoré de la fonction englobante sous forme de chaîne.

__FUNCDNAME__ n'est pas développé si vous utilisez l'option du compilateur de /EP ou de /P .

L'exemple suivant utilise __FUNCDNAME__, __FUNCSIG__, les macros et d' __FUNCTION__ pour afficher les informations de fonction.

__FUNCSIG__

Valide que dans une fonction.Définit la signature de la fonction englobante sous forme de chaîne.

__FUNCSIG__ n'est pas développé si vous utilisez l'option du compilateur de /EP ou de /P .

Sur un système d'exploitation 64 bits, la convention d'appel est __cdecl par défaut.

Pour obtenir un exemple, consultez __FUNCDNAME__.

__FUNCTION__

Valide que dans une fonction.Définit le nom non décoré de la fonction englobante sous forme de chaîne.

__FUNCTION__ n'est pas développé si vous utilisez l'option du compilateur de /EP ou de /P .

Pour obtenir un exemple, consultez __FUNCDNAME__.

_INTEGRAL_MAX_BITS

Stocke la taille maximale (dans les bits) pour un type intégral.

// integral_max_bits.cpp
#include <stdio.h>
int main() {
   printf("%d\n", _INTEGRAL_MAX_BITS);
}

_M_ALPHA

Défini pour d'ALPHAS plateformes de DEC (plus) non prises en charge.

_M_AMD64

Défini pour les processeurs x64.

_M_CEE

Défini pour une compilation qui utilise une forme d' /clr (/clr:oldSyntax, /clr:safe, par exemple).

_M_CEE_PURE

Défini pour une compilation qui utilise /clr:pure.

_M_CEE_SAFE

Défini pour une compilation qui utilise /clr:safe.

_M_IX86

Défini pour les processeurs x86.Consultez le tableau de valeurs pour _M_IX86 ci-dessous pour plus d'informations.Cela n'est pas défini pour les processeurs x64.

_M_IA64

Défini pour les processeur 64 bits de famille de processeurs d' Itanium .

_M_ARM_FP

Développe à la valeur pour indiquer que l'option de compilateur pour /arch a été utilisé :

  • Dans la plage 30-39 si aucune option de ARM d' /arch n'a été spécifiée, indiquant l'architecture par défaut de ARM a été utilisé (VFPv3).

  • Dans la plage 40-49 si /arch:VFPv4 a été utilisé.

  • Consultez /arch (x86) pour plus d'informations.

_M_IX86_FP

Développe à la valeur pour indiquer que l'option de compilateur pour /arch a été utilisé :

  • 0 si /arch:IA32 a été utilisé.

  • 1 si /arch:SSE a été utilisé.

  • 2 si /arch:SSE2 a été utilisé.Cette valeur est la valeur par défaut si /arch n'est pas spécifié.

  • Consultez /arch (x86) pour plus d'informations.

_M_MPPC

Défini pour les plateformes Power Macintosh (plus) non prises en charge.

_M_MRX000

Défini pour les plateformes MIPS (plus) non prises en charge.

_M_PPC

Défini pour les plateformes PowerPC de (plus) non prises en charge.

_M_X64

Défini pour les processeurs x64.

_MANAGED

Défini pour être 1 lorsque /clr est spécifié.

_MFC_VER

Définit la version MFC.Par exemple, dans Visual Studio 2010, _MFC_VER est défini comme 0x0A00.

_MSC_BUILD

Correspond au numéro de révision du numéro de version du compilateur.Le numéro de révision est la quatrième composant du numéro de version période- délimité.Par exemple, si le numéro de version du compilateur Visual C++ a 15.00.20706.01 ans, la macro d' _MSC_BUILD correspond à 1.

_MSC_EXTENSIONS

Cette macro est définie lorsque vous compilez avec l'option du compilateur de /Ze (valeur par défaut).Sa valeur, une fois définie, est 1.

_MSC_FULL_VER

Prend le principale, au secondaire, et aux composants de numéro de build du numéro de version du compilateur.Le nombre majeur est le premier composant du numéro de version période- délimité, le nombre secondaire est le deuxième composant, et le numéro de build est le troisième composant.Par exemple, si le numéro de version du compilateur Visual C++ a 15.00.20706.01 ans, la macro d' _MSC_FULL_VER correspond à 150020706.Tapez cl /? à la ligne de commande pour afficher le numéro de version du compilateur.

_MSC_VER

Correspond aux nombres importants et mineurs du numéro de version du compilateur.Le nombre majeur est le premier composant du numéro de version période- délimitation et le nombre secondaire est le deuxième composant.

Par exemple, si le numéro de version du compilateur Visual C++ a 15.00.20706.01 ans, la macro d' _MSC_VER correspond à 1500.

Dans Visual Studio 2010, _MSC_VER est défini en tant que 1600.

__MSVC_RUNTIME_CHECKS

Défini quand l'une des options du compilateur de /RTC est spécifiée.

_MT

Défini quand /MD ou /MDd (DLL multithread) ou /MT ou /MTd multithread () est spécifié.

_NATIVE_WCHAR_T_DEFINED

Défini quand /Zc:wchar_t est utilisé.

_OPENMP

Défini lors de la compilation avec /openmp, retourne un entier représentant la date de la spécification OpenMP implémenté par Visual C++.

// _OPENMP_dir.cpp
// compile with: /openmp 
#include <stdio.h> 
int main() {
   printf("%d\n", _OPENMP);
}

_VC_NODEFAULTLIB

Défini quand /Zl est utilisé ; consultez /Zl (Omettre le nom de la bibliothèque par défaut) pour plus d'informations.

_WCHAR_T_DEFINED

Défini quand /Zc:wchar_t est utilisé ou si wchar_t est défini dans un fichier d'en-tête du système inclus dans votre projet.

_WIN32

Défini pour les applications Win32 et de Win64.Toujours défini.

_WIN64

Défini pour les applications pour Win64.

_Wp64

Défini en spécifiant /Wp64.

Comme indiqué dans le tableau suivant, le compilateur génère une valeur pour les identificateurs de préprocesseur qui reflètent l'option de processeur spécifié.

Valeurs pour _M_IX86

Option dans l'environnement de développement

Option de ligne de commande

Valeur résultante

Fusion

/GB

_M_IX86 = 600 (valeur par défaut.Les futurs compilateurs émettront une valeur différente pour refléter le processeur dominant.)

Pentium

/G5

_M_IX86 = 500

Pentium Pro, Pentium II, et Pentium III

/G6

_M_IX86 = 600

80386

/G3

_M_IX86 = 300

80486

/G4

_M_IX86 = 400

Voir aussi

Référence

Macros (C/C++)

Opérateurs de préprocesseur

Directives de préprocesseur