Afficher : Delphi C++
Préférences d'affichage

Compilation

De RAD Studio

Remonter à Compilateur Delphi

Projet > Options > Compilateur Delphi > Compilation

Utilisez cette page pour définir les options de compilation pour le projet en cours.

Remarque : Les options décrites ici ne sont pas toutes disponibles pour tous les types de projets. Par exemple, Répertoire de sortie DCP n'apparaît pas pour les projets C++.
Options Description

Cible, Appliquer, Enregistrer

Voir Options de la cible.

Eléments communs

Voir Eléments communs des pages Options de projet.

Options de génération du code

Elément Description Commutateurs du compilateur Toutes les plates-formes sont prises en charge sauf spécification contraire

Contrôle du code inline

Définit ou efface la directive du compilateur Delphi {$INLINE <ON|OFF|AUTO>}. Pour de plus amples informations, voir "Utilisation de la directive inline" dans Appel de procédures et de fonctions (Delphi).

Valeur par défaut = désactivé

‑‑inline

Page de code

Entrez la page de code relative à la langue de votre application, par exemple 1252. La page de code est un nombre décimal représentant une table d'encodage de caractères spécifique, avec des valeurs standard pour les diverses langues.

Valeur par défaut = 0

‑‑codepage

Emettre les informations de type à l'exécution

Contrôle la génération des informations de type à l'exécution. La valeur par défaut est False (aucune information de type à l'exécution n'est émise).

Valeur par défaut = False

‑$M+
‑$M‑

Taille d'énumération minimale

Spécifie la plus petite quantité de mémoire à allouer pour une énumération. Les choix possibles sont Octet {$Z1}, Mot {$Z2}, Double mot {$Z4}. Le bouton popup Flèche bas est décrit dans Eléments communs des pages Options de projet.

Valeur par défaut = Octet

‑$Z1
‑$Z2
‑$Z4

Optimisation

Contrôle l'optimisation du code. Quand cette option est activée (équivalent à {$O+}), le compilateur effectue un nombre d'optimisations de code, telles que le placement des variables dans les registres CPU, en éliminant des sous-expressions communes et en générant des variables d'induction. Quand elle est désactivée (équivalent à {$O-}), toutes ces optimisations sont désactivées.

Il ne sera jamais nécessaire de désactiver les optimisations sauf pour certaines situations de débogage. Toutes les optimisations effectuées par le compilateur Delphi n'altéreront pas la signification d'un programme. En d'autres termes, le compilateur n'effectue aucune optimisation "non sécurisée" nécessitant une connaissance spéciale du programmeur. Cette option permet seulement d'activer ou de désactiver l'optimisation pour une procédure ou une fonction toute entière. Vous ne pouvez pas activer ou désactiver l'optimisation pour une seule ligne, ni pour un groupe de lignes au sein d'une routine.

Valeur par défaut = False

‑$O+
‑$O‑

FDIV Pentium sécurisé

Spécifie si le compilateur génère le code qui détecte l'instruction FDIV défectueuse des anciens processeurs Pentium. Windows 95, Windows NT 3.51 et les nouvelles versions du système d'exploitation Windows contiennent le code qui corrige ce bogue au niveau du système. Quand cette option est activée (équivalent à la compiler directive {$U+}), toutes les divisions à virgule flottante sont effectuées en utilisant les routines de la bibliothèque d'exécution. Lors de la première invocation d'une routine de division à virgule flottante, un test est fait pour voir si l'instruction FDIV du processeur fonctionne correctement et la variable TestFDIV (déclarée dans l'unité System) est mise à jour en conséquence.

Pour les opérations de division à virgule flottante suivantes, la valeur stockée dans TestFDIV est utilisée pour déterminer l'action à entreprendre :

  • -1 signifie que l'instruction FDIV a été testée et ne fonctionne pas correctement.
  • 0 signifie que l'instruction FDIV n'a pas encore été testée.
  • 1 signifie que l'instruction FDIV a été testée et fonctionne correctement.

Avec un processeur qui ne présente aucune erreur de fonctionnement, l'activation de cette option n'induit qu'une très légère baisse de performance. Si le processeur ne fonctionne pas correctement, une division à virgule flottante peut prendre trois fois plus de temps à s'exécuter quand l'option est activée, mais produit toujours un résultat exact.

Si l'option est désactivée (mode {$U-}), les divisions à virgule flottante sont effectuées en utilisant les instructions FDIV intégrées. Le code résultant est plus compact et s'exécute plus rapidement mais peut produire des résultats erronés sur les processeurs Pentium défectueux. Vous ne devez utiliser ce mode que si vous êtes certain que votre code s'exécutera sur un processeur Pentium non défectueux.

Valeur par défaut = False

‑$U+
‑$U‑

  • Windows 32 bits
  • Windows 64 bits
  • OS X
  • Simulateur iOS

Alignement des champs d'enregistrements

Contrôle l'alignement des champs dans les types enregistrement et les structures de classes Delphi. Cliquez sur la flèche vers le bas pour effectuer une sélection parmi les valeurs possibles :

  • Si vous sélectionnez l'option Désactivé (équivalent à {$A1}) ou désactivez cette option (équivalent à {$A-}), les champs ne sont jamais alignés. Tous les enregistrements et structures de classes sont packed.
  • Si vous sélectionnez Octet (équivalent à {$A2}), les champs des types enregistrement déclarés sans le modificateur packed et les champs des structures classe sont alignés sur les frontières octet.
  • Si vous sélectionnez Mot (équivalent à {$A2}), les champs des types enregistrement déclarés sans le modificateur packed et les champs des structures classe sont alignés sur les frontières mot.
  • Si vous sélectionnez Double mot (équivalent à {$A4}), les champs des types enregistrement déclarés sans le modificateur packed et les champs des structures classe sont alignés sur les frontières double mot.
  • Si vous sélectionnez Quadruple mot (équivalent à {$A8} ou {$A+}), les champs des types enregistrement déclarés sans le modificateur packed et les champs des structures classe sont alignés sur les frontières quadruple mot.

Quel que soit le mode de la directive $A, les variables et constantes typées sont toujours alignées pour un accès optimal. L'exécution est plus rapide si vous définissez l'option sur 8 (Quadruple mot).
C'est la valeur par défaut.

‑$A‑
‑$A1
‑$A2
‑$A4
‑$A8
‑$A+

Cadres de pile

Contrôle la génération des cadres de pile pour les procédures et les fonctions.

Quand cette option est activée (équivalent au mode {$W+}), les cadres de pile sont toujours générés pour les procédures et les fonctions, même s'ils ne sont pas nécessaires.

Quand elle est désactivée (équivalent à {$W-}), les cadres de pile ne sont générés que lorsqu'ils sont nécessaires, selon l'utilisation que fait la routine des variables locales. Certains outils de débogage requièrent la génération de cadres de pile pour toutes les procédures et fonctions, mais d'autres outils ne requièrent pas d'activer cette option.
C'est la valeur par défaut.

‑$W+
‑$W‑

  • Windows 32 bits
  • Windows 64 bits
  • OS X
  • Simulateur iOS

Options Débogage

Elément Description Commutateurs du compilateur Toutes les plates-formes sont prises en charge sauf spécification contraire

Assertions

Active ou désactive la génération du code pour les assertions dans un fichier source Delphi. Cette option est activée (équivalent à {$C+}) par défaut. Comme les assertions ne sont pas habituellement utilisées à l'exécution dans les versions commercialisées d'un produit, les directives de compilation désactivant la génération du code pour les assertions sont fournies. Désélectionnez cette option pour désactiver les assertions.

‑$C+
‑$C‑

Informations de débogage

Les informations de débogage se présentent sous la forme de tables de numéros de lignes propres à chaque procédure, qui contiennent les adresses du code correspondant à chaque ligne du texte source. Pour les unités, les informations de débogage sont enregistrées dans le fichier unité, avec le code objet de l'unité. Elles augmentent la taille du fichier unité et l'espace mémoire occupé lors de la compilation des programmes utilisant cette unité, mais n'affectent ni la taille ni la vitesse d'exécution du programme exécutable. Quand un programme ou une unité est compilé avec cette option activée (équivalent à {$D+}), le débogueur intégré vous permet d'exécuter les instructions pas à pas et de définir des points d'arrêt dans ce module.

Les options Placer les informations de débogage dans un fichier TDS distinct et Fichier map (sur la page Liaison du dialogue Options de projet) produisent des informations de ligne complètes pour un module donné seulement si vous avez compilé ce module avec cette option activée. Cette option est généralement utilisée conjointement avec l'option Symboles locaux (commutateur {$L}), qui active et désactive la génération des informations relatives aux symboles locaux pour le débogage.

‑V ‑VN

Symboles locaux

Active ou désactive la génération d'informations relatives aux symboles locaux. Cliquez sur la flèche vers le bas pour sélectionner parmi les valeurs possibles (True, False).

Il s'agit des noms et types de toutes les variables et constantes locales au module, c'est-à-dire tous les symboles de la partie implementation du module (y compris les symboles des procédures et fonctions). Pour les unités, les informations relatives aux symboles locaux sont stockées dans le fichier unité avec le code objet de l'unité. Ces informations augmentent la taille des fichiers unité et l'espace mémoire nécessaire à la compilation des programmes utilisant l'unité. En revanche, elles n'affectent ni la taille ni la vitesse d'exécution du programme exécutable. Quand un programme ou une unité est compilé avec cette option activée (équivalent à {$L+}), le débogueur intégré vous permet d'examiner et de modifier les variables locales du module.

De plus, les appels aux procédures et fonctions du module peuvent être examinés en utilisant Voir > Fenêtres de débogage > Pile d'appels. Les options Placer les informations de débogage dans un fichier TDS distinct et Fichier map (sur la page Liaison du dialogue Options de projet) produisent des informations de symbole local pour un module donné seulement si ce module a été compilé avec cette option activée. Cette option est généralement utilisée conjointement avec l'option Informations de débogage, qui active et désactive la génération des tables de numéros de lignes pour le débogage. Cette option est ignorée si l'option Informations de débogage du compilateur est désactivée.

‑$L+
‑$L‑

Informations de référence des symboles

Génère les informations de référence des symboles utilisées par l'éditeur de code et le Gestionnaire de projets. Correspond à la directive {$Y} du compilateur Delphi.

  • Si l'option Aucune est sélectionnée ({$Y-}), aucune information de référence de symbole n'est enregistrée.
  • Si l'option Définitions uniquement est sélectionnée ({$YD}), le compilateur enregistre les informations sur l'endroit où sont définis les identificateurs.
  • Si l'option Informations de référence est sélectionnée ({$Y+}), le compilateur enregistre les informations sur l'endroit où est défini chaque identificateur et sur l'endroit où il est utilisé.

Cette option n'a d'effet que si Informations de débogage et Symboles locaux (voir plus haut) sont activées.

Les fonctionnalités Achèvement de code et Navigation du code (Ctrl+Click) fonctionnent seulement quand l'option Informations de référence des symboles est définie sur Informations de référence.

‑$Y+
‑$YD
‑$Y‑

Utiliser les .DCU de débogage

Les DCU de débogage contiennent des informations de débogage et sont construits avec les cadres de piles. Quand cette option est cochée, le compilateur ajoute le chemin des DCU de débogage aux chemins de recherche spécifiés dans Sources de débogage sur la page Débogueurs Embarcadero.

Utiliser les références de données importées

Permet aux unités packagées de référencer les variables des autres packages. Equivalent à la directive {$G} du compilateur Delphi.

‑$G+
‑$G‑

  • Windows 32 bits
  • Windows 64 bits
  • OS X
  • Simulateur iOS

Autres options

Elément Description Commutateurs du compilateur Toutes les plates-formes sont prises en charge sauf spécification contraire

Autres options à transmettre au compilateur

Entrez les commutateurs du compilateur que vous voulez ajouter aux paramètres contrôlés par les boîtes de dialogue Projet > Options. Utilisez un tiret comme symbole du commutateur, et séparez les commutateurs par des virgules.

Générer le fichier binaire universel iOS (armv7 + arm64)

Le compilateur crée un fichier binaire universel pour iOS 32 bits et 64 bits.
Valeur par défaut = False (seul le fichier binaire 64 bits est créé).

  • Périphérique iOS - 64 bits

Générer le code PIC

Si cette option est activée, le compilateur génère des unités de code indépendant de la position (PIC) ayant l'extension de fichier .dpu. Cette option correspond au commutateur -P du compilateur.

Valeur par défaut = False

‑P

  • OS X
  • Simulateur iOS

Générer la documentation XML

Génère un fichier contenant la représentation XML de votre répertoire projet. Pour de plus amples informations, voir Documentation XML pour le code Delphi.
Valeur par défaut = False

‑‑doc

Rechercher aussi des noms de fichiers 8.3

Transmet le commutateur -P du compilateur pour DCC32.exe ou DCC64.exe.

Valeur par défaut = False

Vous permet d'utiliser les noms de fichier DOS d'ancien style qui sont au format nomfichier.ext, où nomfichier est une chaîne de 1 à 8 caractères.

Prise en charge sur les plates-formes Windows 32 bits et 64 bits .

‑P

  • Windows 32 bits
  • Windows 64 bits

Générer les informations de dépendance d'unité

Transmet le commutateur -depends du compilateur pour DCC32.exe. Valeur par défaut = False

Si vous activez cette option, elle incorpore une liste de tous les en-têtes inclus récursivement (#include) des fichiers .cpp et leur horodatage dans le fichier .obj.

Ces informations sont utilisées par le système de construction pour reconstruire le fichier .obj si

un en-tête #include a changé.

Quand l'option est désactivée, les fichiers .obj ne contiennent pas les informations d'autodépendance et ne sont pas automatiquement reconstruits quand leurs

en-têtes changent.

‑‑depends

$IF doit être terminé par $IFEND

Permet d'utiliser la directive $IFEND (au lieu de la directive $ENDIF correcte) pour terminer une clause $IF. Si cette option n'est pas activée, les compilateurs peuvent émettre E2029. Voir la directive Legacy IFEND (Delphi) du compilateur.

Valeur par défaut = False

‑‑legacy-ifend

Répertoire de sortie de la documentation XML

Spécifie le répertoire où sera générée la documentation XML de votre projet. Voir l'option Générer la documentation XML ci-dessus.

‑NX

Options Erreurs d'exécution

Elément Description Commutateurs du compilateur Toutes les plates-formes sont prises en charge sauf spécification contraire

Vérification E/S

Active ou désactive la génération automatique du code vérifiant le résultat d'un appel à une procédure d'E/S. Si une procédure d'E/S renvoie un résultat d'E/S non nul alors que ce commutateur est activé, une exception EInOutError est déclenchée (ou le programme s'arrête si la gestion des exceptions est désactivée). Quand ce commutateur est désactivé, vous devez vérifier les erreurs d'E/S en appelant IOResult.
Valeur par défaut = True

‑$I+
‑$I‑

Vérification de débordement

Contrôle la génération du code qui teste le dépassement de capacité. Quand cette option est activée (équivalent à {$Q+}), certaines opérations arithmétiques entières (+, -, *, Abs, Sqr, Succ, Pred, Inc et Dec) font l'objet d'un test de dépassement de capacité. Le code de ces opérations est suivi d'un code supplémentaire vérifiant si le résultat appartient à l'intervalle pris en charge. Si un test de dépassement de capacité échoue, une exception EIntOverflow est déclenchée (ou le programme s'arrête si la gestion des exceptions est désactivée). Ce commutateur est généralement utilisé conjointement à l'option de vérification des limites (commutateur {$R}), qui active et désactive la génération de code de test de débordement. L'activation du test de dépassement de capacité ralentit l'exécution du programme et augmente sa taille.

Valeur par défaut = False

‑$Q+
‑$Q‑

Vérification des limites

Active ou désactive la génération du code qui vérifie les limites. Quand cette option est activée (équivalent à {$R+}), pour toute expression de type tableau ou chaîne indexée, l'index est vérifié pour s'assurer qu'il reste dans les limites définies. Le même test s'applique à toute assignation de valeur à une variable de type scalaire ou sous-intervalle. Si une vérification de limites échoue, une exception ERangeError est déclenchée (ou le programme s'arrête si la gestion des exceptions est désactivée). Activer la vérification des limites ralentit votre programme et en augmente le volume.

Valeur par défaut = False

‑$R+
‑$R‑

Options de syntaxe

Elément Description Commutateurs du compilateur Toutes les plates-formes sont prises en charge sauf spécification contraire

Constantes typées affectables

Contrôle si les constantes typées peuvent être modifiées ou non. Quand cette option est activée (équivalent à {$J+}), les constantes typées peuvent être modifiées et sont essentiellement des variables initialisées. Quand elle est désactivée (équivalent à {$J-}), les constantes typées sont réellement constantes et toute tentative de modification d'une constante typée provoque l'émission d'une erreur par le compilateur. Les constantes affectables font référence à l'utilisation d'une constante typée comme variable modifiable à l'exécution.

L'ancien code source utilisant des constantes typées affectables doit être compilé avec cette option activée, mais pour les nouvelles applications, il est conseillé d'initialiser les variables et de compiler votre code avec l'option désactivée.

Valeur par défaut = False

‑$J+
‑$J‑

Evaluation booléenne complète

Permet d'alterner entre les deux modèles de génération de code Delphi pour les opérateurs booléens AND et OR. Quand cette option est activée (équivalent à {$B+}), le compilateur génère un code évaluant entièrement les expressions booléennes. Tous les opérandes des expressions booléennes contenant des opérateurs AND et OR sont alors évalués, même si le résultat de l'expression totale est déjà connu. Quand cette option est désactivée (équivalent à {$B-}), le compilateur génère un code d'évaluation "court-circuit" des expressions booléennes. Ceci signifie que l'évaluation s'arrête à partir du moment où le résultat de l'expression devient évident dans l'ordre d'évaluation de gauche à droite. Valeur par défaut = False

‑$B+
‑$B‑

Syntaxe étendue

N'existe que pour des raisons de compatibilité descendante. Vous ne devez pas utiliser cette option (équivalent au mode {$X-}) lors de l'écriture d'applications Delphi. Cette option active ou désactive la syntaxe étendue de Delphi :

Instructions de fonctions. En mode {$X+}, les appels de fonctions peuvent être utilisés comme des appels de procédures ; autrement dit, le résultat d'un appel à une fonction peut être ignoré plutôt que transmis à une autre fonction ou utilisé dans une opération ou une assignation. Généralement, les calculs opérés par une fonction sont renvoyés dans son résultat et le fait de ne pas vouloir récupérer ce résultat paraît un peu absurde. Mais, une fonction est parfois appelée parce qu'elle effectue une tâche, comme la définition de la valeur d'une variable globale, sans produire un résultat utile.

La variable Result. Quand cette option est activée (équivalent à {$X+}), la variable prédéfinie Result peut servir dans le corps d'une fonction à contenir la valeur de retour de la fonction.

Chaînes terminées par null. Quand cette option est activée, les chaînes Delphi peuvent être assignées à des tableaux de caractères indexés à partir de zéro (array[0..X] of Char), qui sont compatibles avec les types PChar.

Valeur par défaut = True

‑$X+
‑$X‑

Chaînes longues par défaut

Cette option (équivalente à la directive {$H}) contrôle la signification du mot réservé string utilisé seul dans une déclaration de type. Le type générique string peut représenter soit une chaîne longue allouée dynamiquement (de type fondamental UnicodeString) ou une chaîne courte allouée statiquement (de type fondamental ShortString). Par défaut, Delphi définit le type chaîne générique par un UnicodeString.

Tous les composants des bibliothèques de composants sont compilés dans cet état. Si vous écrivez des composants, ils doivent aussi utiliser des chaînes longues comme doit le faire tout code recevant des données issues des propriétés de type chaîne de la bibliothèque de composants. L'état désactivé (équivalent à {$H-}) est surtout pratique pour utiliser du code écrit pour des versions précédentes de Delphi qui utilisaient par défaut le type chaîne courte. Vous pouvez localement redéfinir la signification des définitions des types chaîne pour assurer la génération de chaînes courtes. Vous pouvez aussi changer les déclarations des types chaînes courtes en string[255] ou ShortString, qui ne sont pas ambigus et sont indépendants de l'option activée.

Valeur par défaut = True

‑$H+
‑$H‑

  • Windows 32 bits
  • Windows 64 bits
  • OS X
  • Simulateur iOS

Paramètres ouverts

N'a de signification que pour du code compilé gérant les chaînes vastes et assure une compatibilité descendante avec les premières versions de Delphi et Object Pascal. Cette option (équivalent à la directive {$P}) contrôle la signification des paramètres variables déclarés en utilisant le mot clé string dans les chaînes vastes désactivées (équivalent à l'état {$H-}). Quand cette option est désactivée (équivalent à {$P-}), les paramètres variables déclarés à l'aide du mot clé string sont des paramètres variables normaux, alors que quand elle est activée (équivalent à {$P+}) il s'agit de paramètres chaînes ouverts. Quelle que soit la définition de cette option, il est toujours possible d'utiliser l'identificateur OpenString pour déclarer des paramètres chaînes ouverts.

Valeur par défaut = True

‑$P+
‑$P‑

Chaînes-var strictes

Cette option (équivalent à la directive {$V}) n'est significative que pour du code Delphi utilisant des chaînes courtes ; elle assure une compatibilité descendante avec les premières versions de Delphi et Object Pascal. Elle contrôle le type sur les chaînes courtes transmises en tant que paramètres variables. Quand elle est activée (équivalent à {$V+}), un type strict est effectué, nécessitant que les paramètres formels et effectifs soient du même type de chaîne. Quand elle est désactivée (équivalent à {$V-}) n'importe quelle variable de type chaîne courte est autorisée en tant que paramètre effectif, même si sa longueur maximale déclarée diffère de celle du paramètre formel.

Valeur par défaut = True

‑$V+
‑$V‑

Opérateur @ typé

Contrôle les types des valeurs pointeur générées par l'opérateur @ et la compatibilité des types de pointeurs. Quand cette option est désactivée (équivalent à {$T-}), le résultat de l'opérateur @ est toujours un pointeur (Pointer) non typé compatible avec tous les autres types de pointeurs. Lorsque @ est appliqué à une référence de variable avec cette option activée (équivalent à {$T+}), le résultat est un pointeur typé qui n'est compatible qu'avec Pointer ou avec d'autres pointeurs sur le type de la variable. Quand cette option est désactivée, des types de pointeurs distincts autres que Pointer sont incompatibles (même s'ils sont des pointeurs sur le même type). Quand elle est activée, les pointeurs sur le même type sont compatibles.

Valeur par défaut = False

‑$T+
‑$T‑


Conseil : Pour afficher les options du compilateur dans la fenêtre Messages quand vous compilez un projet, choisissez Outils > Options > Options d'environnement et sélectionnez l'option Afficher la ligne de commande. A la prochaine compilation d'un projet, la commande utilisée pour compiler le projet et le fichier de réponse sont affichés tous deux dans la fenêtre Messages. Le fichier de réponse contient les options du compilateur et les fichiers à compiler.

Voir aussi

Outils personnels
Autres langues
Versions précédentes