Compatibilité du compilateur C++

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Options de projet du 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 Support du compilateur
  bcc32     bcc64     bccosx     bcciosarm     bccaarm  

Pointeurs de base virtuels 'Slow'

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

YesC++11Feature.png


YesC++11Feature.png



Déplacements de constructeurs

Supporte les déplacements de constructeurs. Valeur par défaut = False

YesC++11Feature.png


YesC++11Feature.png



Spécialisation de template explicite comme fonction membre

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

YesC++11Feature.png


YesC++11Feature.png



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 Appmethod C++. Activez cette option si vous avez besoin de compiler des fichiers source que vous voulez utiliser avec les versions antérieures de Appmethod C++ (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

YesC++11Feature.png


YesC++11Feature.png



Arguments de classes de style ancien

Supporte les arguments de classes de style ancien. Valeur par défaut = False

YesC++11Feature.png


YesC++11Feature.png



Spécialisation de template explicite de style ancien

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

YesC++11Feature.png


YesC++11Feature.png



Génération virdef de style ancien

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

YesC++11Feature.png


YesC++11Feature.png



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

YesC++11Feature.png


YesC++11Feature.png



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

YesC++11Feature.png





VTable en avant

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

YesC++11Feature.png


YesC++11Feature.png



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

YesC++11Feature.png


YesC++11Feature.png



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

YesC++11Feature.png


YesC++11Feature.png



Options générales

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

Compatibilité descendante

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

YesC++11Feature.png


YesC++11Feature.png



Désactiver l'analyseur digraphe lexical

Désactive l'analyseur digraphe lexical. Les digraphes sont des séquences de 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

YesC++11Feature.png


YesC++11Feature.png



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++0x. Le compilateur réduit désormais les deux références.

Par exemple :

typedef int & intr;
typedef intrr &;

Le type intrr est légal, c'est 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.

YesC++11Feature.png


YesC++11Feature.png



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

YesC++11Feature.png


YesC++11Feature.png



Activer toutes les options de compatibilité

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

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

Valeur par défaut = False

YesC++11Feature.png


YesC++11Feature.png



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

YesC++11Feature.png


YesC++11Feature.png



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 for, i = 0
...
Extérieur de la boucle for, i = 10

Valeur par défaut = False

YesC++11Feature.png


YesC++11Feature.png



Fonctions globales dans les segments

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

YesC++11Feature.png


YesC++11Feature.png



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

YesC++11Feature.png


YesC++11Feature.png



Code natif pour MBCS

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

YesC++11Feature.png


YesC++11Feature.png



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

YesC++11Feature.png


YesC++11Feature.png



Liaison de références non-const

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

YesC++11Feature.png


YesC++11Feature.png



Littéraux chaîne non-const

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

YesC++11Feature.png


YesC++11Feature.png



Anciennes règles 'using' dans les templates

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

YesC++11Feature.png


YesC++11Feature.png



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

YesC++11Feature.png





Ancienne résolution de surcharge

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

YesC++11Feature.png





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

YesC++11Feature.png


YesC++11Feature.png



Inverser les constantes multicaractères

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

YesC++11Feature.png


YesC++11Feature.png



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 supporte pas ces options de compatibilité. Les options de compatibilité -Vb sont présentées dans le tableau suivant :

Commutateur de la ligne de commande Signification

-Va

Supporte 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