Compatibilité du compilateur C++

De RAD Studio
Aller à : navigation, rechercher

Remonter à Compilateur C++


Projet > Options > Compilateur C++ > Compatibilité

Utilisez cette boîte de dialogue pour définir les options de compatibilité du compilateur C++ spécifiques.

Les options de cette boîte de dialogue fournissent une compatibilité descendante avec les versions antérieures du compilateur. En général, ces options doivent seulement être définies sur True quand une telle compatibilité est requise. Leurs valeurs par défaut sont typiquement False.


Options Description

Cible, Appliquer, Enregistrer

Voir Options de la cible.

Eléments communs

Voir Eléments communs des pages Options de projet.

Options de compatibilité C++

Options de compatibilité C++ Description Commutateurs du compilateur
  bcc32     bcc32c     bcc64     bccosx     bcciosarm     bcciosarm64     bccaarm  

Pointeurs de base virtuels 'Slow'

Utilise des pointeurs de base virtuels 'slow'. Valeur par défaut = False.

-Vv

N/A

Plate-forme non prise en charge

-Vv

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Déplacements de constructeurs

Prend en charge les déplacements de constructeurs. Valeur par défaut = False

-Vc

N/A

Plate-forme non prise en charge

-Vc

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Spécialisation de template explicite comme fonction membre
(-Vbx)

Autorise les spécialisations de templates explicites comme fonctions membres. Valeur par défaut = False

-Vbx

N/A

Plate-forme non prise en charge

-Vbx

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Ancienne disposition de classe Borland

Conservée par souci de compatibilité, cette option force le compilateur C++ à agencer les classes dérivées de la même façon que dans les versions antérieures de C++Builder. Activez cette option si vous avez besoin de compiler des fichiers source que vous voulez utiliser avec les versions antérieures de C++Builder (par exemple, si vous avez besoin de travailler avec une DLL que vous ne pouvez pas recompiler, ou si vous avez des fichiers de données anciens contenant des dispositions de classes figées). Valeur par défaut = False

-Vl

N/A

Plate-forme non prise en charge

-Vl

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Arguments de classes de style ancien

Prend en charge les arguments de classes de style ancien. Valeur par défaut = False

-Va

N/A

Plate-forme non prise en charge

-Va

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Spécialisation de template explicite de style ancien

Permet la spécialisation de template explicite de style ancien. Valeur par défaut = False

-Vbe

N/A

Plate-forme non prise en charge

-Vbe

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Génération virdef de style ancien

Utilise la génération virdef de style ancien. Valeur par défaut = False

-Vs

N/A

Plate-forme non prise en charge

-Vs

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Empiler 'this' en premier

Place 'this' en premier, comme en Pascal. Le compilateur pousse généralement les paramètres sur la pile de la droite vers la gauche. Valeur par défaut = False

-Vp

N/A

Plate-forme non prise en charge

-Vp

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Compatibilité VC++

Pour fournir la compatibilité avec Microsoft Visual C++, substitue __msfastcall à la convention d'appel __fastcall. Ce commutateur ne doit pas être utilisé si vous travaillez avec une application VCL. Il provoque de nombreuses erreurs du lieur. Valeur par défaut = False

-VM

N/A

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

VTable en avant

Place le pointeur de table virtuelle au début de la disposition d'objet. Valeur par défaut = False

-Vt

N/A

Plate-forme non prise en charge

-Vt

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Classe de base vide de longueur zéro

Généralement, la taille d'une classe est au moins d'un octet, même si aucune donnée membre n'y est définie. Si cette option est activée, le compilateur ignore cet octet inutilisé lorsqu'il détermine l'agencement mémoire et la taille cumulée des classes dérivées ; les classes de base vides ne consomment plus d'espace dans les classes dérivées. Valeur par défaut = False

-Ve

N/A

Plate-forme non prise en charge

-Ve

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Fonctions de membre de classe vide de longueur zéro

Généralement la taille d'un membre de donnée dans une définition de classe occupe au moins un octet. Quand cette option est activée, le compilateur autorise une structure vide de taille zéro. Valeur par défaut = False

-Vx

N/A

Plate-forme non prise en charge

-Vx

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Options générales

Options générales Description Commutateurs du compilateur
bcc32 bcc32c bcc64 bccosx bcciosarm bcciosarm64 bccaarm

Compatibilité descendante

Active toutes les options de compatibilité -Vxxx pour la compatibilité descendante. Valeur par défaut = False

-Vb

N/A

Plate-forme non prise en charge

-Vb

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Désactiver l'analyseur digraphe lexical

Désactive l'analyseur digraphe lexical. Les digraphes sont des séquences de deux caractères qui représentent un caractère unique pouvant être difficile à reproduire sur certains claviers. Si cette option est définie sur True, de tels diagraphes ne sont pas reconnus. Valeur par défaut = False

-Vg

N/A

Plate-forme non prise en charge

-Vg

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Ne pas replier ref-to-ref

Auparavant, une référence vers une référence était illégale. Le nouveau comportement par défaut consiste à suivre les règles C++11. Le compilateur réduit désormais les deux références.

Par exemple :

typedef int & intr;
typedef intrr &;

Le type intrr est légal, le même type que intr conformément aux nouvelles règles C++. Bcc32 (Rev. 6.0 et supérieur) suit ces règles par défaut. Sous les règles C++ précédentes, intrr serait illégal. Si vous spécifiez l'option Ne pas replier ref-to-ref, intrr est signalé comme une erreur, comme il aurait été auparavant une erreur.

-Vbc

N/A

Plate-forme non prise en charge

-Vbc

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Ne pas substantyper la convention d'appel

Lorsque cette option est activée, le compilateur inhibe la distinction faite sur les noms de fonction quand la seule et unique différence se résume aux options d'incompatibilité dans la génération du code. Par exemple, avec cette option définie, le lieur ne détecte pas un appel à une fonction membre __fastcall utilisant la convention d'appel cdecl. Cette option n'est fournie qu'à des fins de compatibilité descendante ; elle vous permet de lier d'anciens fichiers de bibliothèque que vous ne pouvez pas recompiler. Valeur par défaut = False

-VC

N/A

Plate-forme non prise en charge

-VC

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Activer toutes les options de compatibilité

Active la plupart des options de compatibilité utilisées avec l'ancien code :

  • Pointeurs de base virtuels 'Slow' -Vv
  • Arguments de classe de style ancien -Va
  • Empiler 'this' en premier -Vp
  • VTable en avant -Vt
  • Déplacements de constructeurs -Vc
  • Portée de l'instruction for -Vd
  • Fonctions de membre de classe vide de longueur zéro -Vx

Valeur par défaut = False

-Vo

N/A

Plate-forme non prise en charge

-Vo

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Activer les nouveaux noms d'opérateurs

Active les nouveaux noms d'opérateurs, tels que 'and', 'or', 'and_eq', 'bitand', et ainsi de suite. Valeur par défaut = False

-Vn

N/A

Plate-forme non prise en charge

-Vn

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Portée de l'instruction for

Spécifie la portée des variables déclarées dans les expressions des boucles for. La sortie du segment de code suivant change selon le paramétrage de cette option :

int main(void)
{
  for(int i=0; i<10; i++)
  {
    cout << "Inside for loop, i = " << i << endl;
  } //end of for-loop block
  cout << "Outside for loop, i = " << i << endl; //error without this option
} //end of block containing for loop

Lorsque cette option est désactivée (valeur par défaut), la variable i sort de la portée quand le traitement atteint la fin de la boucle for. Lorsque vous compilez ce code en désactivant cette option, une erreur de compilation survient indiquant un symbole non défini.

Si l'option Portée de l'instruction for est activée, la variable i sort de la portée quand le traitement atteint la fin du bloc contenant la boucle for. Dans ce cas, la sortie du code serait :

Intérieur de la boucle, i = 0
...
Extérieur de la boucle, i = 10

Valeur par défaut = False

-Vd

N/A

Plate-forme non prise en charge

-Vd

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Fonctions globales dans les segments

Génère toutes les fonctions globales dans leur propre segment virtuel ou faible.
Valeur par défaut = True

-VA

N/A

Plate-forme non prise en charge

-VA

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Algorithme de recherche d'en-tête Microsoft

Utilise les algorithmes de recherche Microsoft pour localiser les fichiers d'en-tête.
Valeur par défaut = True

-VI

N/A

Plate-forme non prise en charge

-VI

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Code natif pour MBCS

Emet du code natif au lieu de l'Unicode pour les caractères multi-octets.
Valeur par défaut = False

-Vw

N/A

Plate-forme non prise en charge

-Vw

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Appels non const pour un objet const

Permet l'appel d'une fonction membre non-const pour un objet const.
Valeur par défaut = False

-Vbn

N/A

Plate-forme non prise en charge

-Vbn

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Liaison de références non-const

Permet la liaison de références non-const.
Valeur par défaut = False

-Vbr

N/A

Plate-forme non prise en charge

-Vbr

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Littéraux chaîne non-const

Ne traite pas les littéraux chaîne en tant que const.
Valeur par défaut = False

-Vbs

N/A

Plate-forme non prise en charge

-Vbs

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Anciennes règles 'using' dans les templates

Utilise les anciennes règles Borland pour 'using' dans les templates.
Valeur par défaut = False

-Vbu

N/A

Plate-forme non prise en charge

-Vbu

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Ancienne recherche d'inclusion 8.3

Utilise l'algorithme de recherche 8.3 pour localiser les fichiers d'en-tête.
Valeur par défaut = False

-Vi

N/A

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Ancienne résolution de surcharge

Utilise les anciennes règles de résolution de surcharge.
Valeur par défaut = False

-Vbo

N/A

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Anciennes règles de type pour les opérateurs ternaires

Utilise les anciennes règles de type Borland pour les opérateurs ternaires.
Valeur par défaut = False

-Vbt

N/A

Plate-forme non prise en charge

-Vbt

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Inverser les constantes multicaractères

Le compilateur inverse l'ordre des constantes multicaractères.
Valeur par défaut = False

-Vr

N/A

Plate-forme non prise en charge

-Vr

Plate-forme non prise en charge

Plate-forme non prise en charge

Plate-forme non prise en charge

Options -Vb du compilateur pour BCC32/BCCOSX

Remarque : Plusieurs options de compatibilité ont des commutateurs du compilateur pour BCC32 et BCCOSX qui commencent par -Vb. BCC64 ne prend pas en charge ces options de compatibilité. Les options de compatibilité -Vb sont présentées dans le tableau suivant :

Commutateur de ligne de commande Signification

-Va

Prend en charge les arguments de classe de style ancien.

-Vb

Active tous les commutateurs -Vb. Active la compatibilité descendante avec les versions Bcc 5.8.2 et antérieures.

-Vb+

Active tous les commutateurs -Vb.

-Vb-

Désactive tous les commutateurs -Vb.

-Vb.

Réinitialise tous les commutateurs -Vb à leurs valeurs par défaut. Disponible seulement sur la ligne de commande, pas dans l'EDI.

-Vbc

Ne pas replier ref-to-ref et autoriser les références qualifiées.

-Vbe

Permet la spécialisation de template explicite de style ancien.

-Vi

Utilise l'ancien algorithme 8.3 pour localiser les fichiers d'en-tête.

-Vbn

Permettre l'appel d'une fonction membre non-const ou non-volatile pour un objet const ou volatile.

-Vbo

Utilise les anciennes règles Borland de résolution de surcharge.

-Vbr

Autoriser les anciennes règles Borland pour la liaison de références.

-Vbs

Traiter les littéraux chaîne en tant que non-const.

-Vbt

Utilise les anciennes règles de type Borland pour les opérateurs ternaires.

-Vbu

Utilise les anciennes règles Borland pour 'using' dans les templates.

-Vbx

Autorise les spécialisations de templates explicites comme fonctions membres.

Voir aussi