Aligner les champs (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Liste des directives de compilation Delphi - Index


Type

Commutateur

Syntaxe

{$A+}, {$A-}, {$A1}, {$A2}, {$A4}, {$A8} ou {$A16} {$ALIGN ON}, {$ALIGN OFF}, {$ALIGN 1}, {$ALIGN 2}, {$ALIGN 4}, {$ALIGN 8} ou {$ALIGN 16}

Par défaut

{$A8} {$ALIGN 8}

Portée

Locale


Remarques

La directive $A contrôle l'alignement maximal utilisé par le compilateur lors de l'introduction du remplissage pour aligner un champ.

Dans l'état {$A1} ou {$A-}, les champs ne sont jamais alignés. Tous les enregistrements et structures de classes sont packed.

Dans l'état {$A2}, les champs des types enregistrement déclarés sans le modificateur packed et les champs des structures de classe sont alignés sur des frontières de mots.

Dans l'état {$A4}, les champs des types enregistrement déclarés sans le modificateur packed et les champs des structures de classe sont alignés sur des frontières de doubles mots.

Dans l'état {$A8} ou {$A+}, les champs des types enregistrement déclarés sans le modificateur packed et les champs des structures de classe sont alignés sur des frontières de quadruples mots.

Dans l'état {$A16}, les champs des types enregistrement déclarés sans le modificateur packed et les champs des structures de classe sont alignés sur des frontières de doubles mots quadruples.

L'alignement de champ de type enregistrement est décrit dans le Guide du langage Delphi dans la section Formats de données internes (Delphi)#Types enregistrement.

Quel que soit l'état de la directive $A, les variables et constantes typées sont toujours alignées pour un accès optimal. Dans l'état {$A8}, l'exécution est plus rapide.

Pour les applications macOS, l'alignement de la pile doit être effectué sur des frontières de 16 octets. Pour des détails, voir le blog de Eli Boling sur http://blogs.embarcadero.com/eboling/2009/05/20/5607 (EN).

Voir aussi