Macros prédéfinies

De RAD Studio
Aller à : navigation, rechercher

Remonter à Le préprocesseur - Index


Le compilateur C+ prédéfinit certains identificateurs globaux, connus comme constantes manifestes. La plupart des identificateurs commencent et se terminent par deux caractères de soulignement (__).

Remarque : Pour plus de lisibilité, les caractères de soulignement sont souvent séparés par un espace unique. Dans votre code source, vous ne devez pas insérer cet espace entre les caractères de soulignement.

Pour les macros dont la valeur prend la forme 0x0nnn, le numéro de version (nnn) est déterminé par le numéro de version de l'exécutable du compilateur C++ associé. En commençant avec la release XE, vous pouvez vérifier le numéro de version en utilisant l'option --version sur BCC32.EXE.


Macro Valeur Description

__ANDROID__

Définie seulement dans les compilateurs qui prennent en charge la compilation croisée avec un produit Android en tant que plate-forme cible :

__APPLE__

Définie seulement dans les compilateurs qui prennent en charge la compilation croisée avec un produit Apple en tant que plate-forme cible :

__arm__

Définie seulement dans les compilateurs qui prennent en charge la compilation croisée pour l'architecture d'un compilateur ARM :

__arm64__

Définie seulement dans les compilateurs qui prennent en charge la compilation croisée pour l'architecture d'un compilateur ARM64 :

__BCOPT__

1

Définie seulement dans les compilateurs qui prennent en charge l'optimisation, par conséquent toujours définie.

__BCPLUSPLUS__

Les valeurs sont listées dans la section Versions du compilateur C++ de cette rubrique.

Définie si vous avez sélectionné la compilation C++. Cette valeur augmentera dans les prochaines releases.

__BOOL__

1

Indique que le mot clé bool est accepté.

__BORLANDC__

Les valeurs sont listées dans la section Versions du compilateur C++ de cette rubrique.

Numéro de version.

__CDECL__

1

Définie si les conventions d'appel sont définies sur cdecl ; sinon, elle est non définie.

_CHAR_UNSIGNED

1

Non définie par défaut. L'utilisation du commutateur -K pour rendre le caractère par défaut non signé provoque la définition de cette macro. En définitive, l'option -K contrôle la façon dont un char est étendu quand il est converti en int. Par défaut, le compilateur effectue une extension du signe, mais si vous activez _CHAR_UNSIGNED_, il effectue une extension de zéros lors de la conversion en int.

__clang__

1

Définie si un compilateur C++ amélioré sur Clang est utilisé.

Voir Clang Builtin Macros.

__CODEGEARC__

Les valeurs sont listées dans la section Versions du compilateur C++ de cette rubrique.

Numéro de version.

__CODEGEARC_VERSION__

  • Numéro de version majeure : bits 31..24
  • Numéro de version mineure : bits 23..16
  • Numéro de version interne : bits 15..0

Cette macro interne se développe en un entier qui encode la version majeure et la version mineure du compilateur, ainsi qu'un nombre interne. Voir Exemple de macro CODEGEARC VERSION.

__CODEGUARD__

Définie quand l'une des options CodeGuard du compilateur est utilisée ; sinon, elle est non définie.

__CONSOLE__

1

Lorsqu'elle est définie, la macro indique que le programme est une application console.

_CPPUNWIND

1

Active le déroulement de la pile. La valeur est true par défaut. Utilisez -xd-!ALink(OSCGExceptions1) pour désactiver cette possibilité.

__cplusplus

1

Définie en mode C++ ; sinon, elle est non définie.

__DATE__

Littéral chaîne

Donne la date du début du traitement du fichier en cours.

__DLL__

1

Définie lorsque l'option -WD du compilateur est utilisée ; sinon, elle est non définie.

__FILE__

Littéral chaîne

Nom du fichier en cours de traitement.

__FLAT__

1

Définie lors de la compilation dans un modèle de mémoire linéaire 32 bits.

__FUNC__ ou __FUNCTION__

Littéral chaîne

Nom de la fonction en cours de traitement. Plus d'informations.

__LINE__

Constante décimale

Numéro de la ligne en cours de traitement du fichier source en cours.

__MACH__

Définie seulement dans les compilateurs qui prennent en charge la compilation croisée avec une cible de MAC macOS.

_M_IX86

0x12c

Toujours définie. La valeur par défaut est 300. Vous pouvez passer la valeur à 400 ou 500 en utilisant l'option de compilateur /4 ou /5.

__MT__

1

Définie seulement si l'option -tWM est utilisée. Indique que la bibliothèque multithread doit être liée.

__PASCAL__

1

Définie si les conventions d'appel sont définies sur Pascal ; sinon, elle est non définie.

_PUSHPOP_SUPPORTED

1

Toujours définie ; permet aux en-têtes standard Microsoft d'utiliser push et pop pour vérifier si une fonctionnalité est prise en charge.

_STDCALL_SUPPORTED

1

Toujours définie ; définit la convention d'appel stdcall de Microsoft.

__STDC__

1

Définie si vous compilez avec l'option de compilateur -A ; sinon, elle est non définie.

__TCPLUSPLUS__

Les valeurs sont listées dans la section Versions du compilateur C++ de cette rubrique.

Numéro de version.

__TEMPLATES__

1

Définie à 1 pour les fichiers C++ (ce qui signifie que les templates sont pris en charge) ; sinon, elle est non définie.

__TIME__

Littéral chaîne

Donne l'heure du début du traitement du fichier en cours.

__TLS__

1

Stockage local thread. Toujours true.

__TURBOC__

Les valeurs sont listées dans la section Versions du compilateur C++ de cette rubrique.

Valeur qui augmentera dans les prochaines releases.

_UNICODE et UNICODE

Définie pour les programmes C++ qui utilisent la VCL.

_WCHAR_T

Définie seulement pour les programmes C++ pour indiquer que wchar_t est un type de données intrinsèque.

_WCHAR_T_DEFINED

Définie seulement pour les programmes C++ pour indiquer que wchar_t est un type de données intrinsèque.

_Windows

1

Définie lors de la compilation sur la plate-forme Windows.

__WIN32__

1

Définie pour les applications console et GUI sur la plate-forme Windows 32 bits.

_WIN64

1

Définie pour les applications console et GUI sur la plate-forme Windows 64 bits.

Notes:
  • Les macros prédéfinies __DATE__, __FILE__ , __FUNC__, __LINE__, __STDC__ et __TIME__ ne peuvent pas être redéfinies ou non définies.
  • Afin de vérifier la liste entière des macros prédéfinies prises en charge par les compilateurs C++ améliorés par Clang, voir macros prédéfinies.

Versions du compilateur C++ dans les macros prédéfinies

Les macros définies pour le compilateur C++ (telles que __CODEGEARC__) ont les numéros de version suivants :

  • 0x0570 pour Developer Studio 2006.
  • 0x0590 pour C++Builder 2007.
  • 0x0591 pour C++Builder 2007 mise à jour 1.
  • 0x0592 pour RAD Studio 2007.
  • 0x0593 pour RAD Studio 2007 Mise à jour de décembre.
  • 0x0610 pour C++Builder 2009 et pour C++Builder 2009 Mise à jour 1.
  • 0x0620 pour C++Builder 2010 et pour C++Builder 2010Mise à jour 1.
  • 0x0621 pour C++Builder 2010 Mise à jour 2.
  • 0x0630 pour C++Builder XE.
  • 0x0631 pour C++Builder XE Mise à jour 1.
  • 0x0640 pour C++Builder XE2.
  • 0x0650 pour C++Builder XE3 et C++Builder XE3 Mise à jour 1.
  • 0x0651 pour Mise à jour de janvier 2013 (BCC32 and BCCOSX); BCC64 est resté à 0x0650.
  • 0x0660 pour C++Builder XE4 (BCC32 and BCCOSX); BCC64 est resté à 0x0650.
  • 0x0670 pour C++Builder XE5 (BCC32, BCC64, BCCOSX et BCCIOSARM).
  • 0x0680 pour C++Builder XE6 (BCC32, BCC64, BCCOSX, BCCIOSARM et BCCAARM).
  • 0x0690 pour C++Builder XE7 (BCC32, BCC64, BCCOSX, BCCIOSARM et BCCAARM).
  • 0x0700 pour C++Builder XE8 (BCC32, BCC64, BCCOSX, BCCIOSARM, BCCIOSARM64 et BCCAARM).
  • 0x0710 pour C++Builder Seattle (BCC32C, BCC32, BCC64, BCCOSX, BCCIOSARM, BCCIOSARM64 et BCCAARM).
  • 0x0711 pour C++Builder Seattle Subscription Update 1 (BCC32) ; d'autres compilateurs restent à 0x0710.
  • 0x0720 pour C++Builder Berlin (BCC32C, BCC32, BCC64, BCCOSX, BCCIOSARM, BCCIOSARM64 et BCCAARM).
  • 0x0730 for C++Builder Tokyo (BCC32C, BCC32, BCC64, BCCOSX, BCCIOSARM, BCCIOSARM64 et BCCAARM).
  • 0x0740 for C++Builder Rio (BCC32C, BCC32, BCC64, BCCOSX, BCCIOSARM, BCCIOSARM64, BCCAARM et BCC32X).
  • 0x0750 for C++Builder Sydney (BCC32C, BCC32, BCC64, BCCOSX, BCCIOSARM, BCCIOSARM64, BCCAARM et BCC32X).

Voir aussi Versions du compilateur.

Macros définies ailleurs

Les macros suivantes sont définies à des fins de compatibilité descendante avec #include System.hpp :

Macro Valeur Description

ANSISTRING_AS_TEMPLATE

Le type AnsiString est défini comme une classe template, AnsiString<T>.

_STRINGCHECKS_OFF
(n'est plus prise en charge)

Dans les releases antérieures, les programmes C++ s'attendaient à ce que le compilateur Delphi ne définisse pas la directive STRINGCHECKS. Le compilateur Delphi ne prend plus en charge la directive STRINGCHECKS. Ainsi, la macro _STRINGCHECKS_OFF C++ associée est inutile et n'est plus définie. Par conséquent, si vous migrez du code pré-2009 vers la version en cours, vous devez mettre à jour la signature du gestionnaire d'événement (car un gestionnaire d'événement pré-2009 attend AnsiString, alors que l'exécution envoie à présent UnicodeString). Voir Unicode dans RAD Studio.

Voir aussi