Macros prédéfinies
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 (__).
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__ |
|
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. |
- 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).
- 0x0760 for C++Builder Alexandria (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 |
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. |