HPPEMIT (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Liste des directives de compilation Delphi - Index

Type

Paramètre

Syntaxe

{$HPPEMIT 'chaîne'}


La directive HPPEMIT ajoute une chaîne spécifiée au fichier d'en-tête généré pour C++. Par exemple : {$HPPEMIT 'typedef double Weight;' }. Chaque fois qu'une unité doit être liée, y compris en l'absence de références à cette unité, le code Delphi doit utiliser la directive HPPEMIT. L'en-tête HPP généré à partir de cette unité contient alors des macros qui garantissent que, lorsqu'il est inclus dans un fichier source C++, l'en-tête provoque la liaison de l'unité.

Les directives HPPEMIT sont écrites dans la section "Fourni par l'utilisateur" en haut du fichier en-tête, dans l'ordre où elles apparaissent dans le fichier Delphi.

La directive HPPEMIT accepte une directive END facultative qui demande au compilateur d'émettre la chaîne en bas du fichier .hpp. Sinon, la chaîne est émise au début du fichier.

Exemple :

{$HPPEMIT     'Symbol goes to top of file'}
{$HPPEMIT END 'Symbol goes to bottom of file'}

Pour C++ sur les plates-formes mobiles, {$HPPEMIT LINKUNIT} remplace #pragma link

Pour les applications C++, {$HPPEMIT LINKUNIT} remplace #pragma link sur les plates-formes mobiles.

Le runtime de Delphi possède des unités qui doivent être liées afin d'activer certaines fonctionnalités. Dans C++, la liaison automatique était auparavant effectuée en utilisant la directive suivante :

{$HPPEMIT '#pragma link "<nom_unité>"'}

Vous devriez désormais utiliser à la place la directive suivante :

{$HPPEMIT LINKUNIT}

Génération des déclarations d'espace de nommage pour C++

De plus, deux nouvelles directives HPPEMIT ont été ajoutées dans la Mise à jour 2 de XE5 :

  • {$HPPEMIT OPENNAMESPACE}
    Cette directive génère des déclarations d'espace de nommage C++ pour l'unité en cours.
    Par exemple, si vous utilisez {$HPPEMIT OPENNAMESPACE} dans l'unité FMX.Bind.Editors.pas, le contenu suivant sera généré dans le fichier .HPP correspondant :
 namespace Fmx
 {
 namespace Bind
 {
 namespace Editors
 {
  • {$HPPEMIT CLOSENAMESPACE}
    Cette directive génère des accolades fermantes pour les espaces de nommage déclarés avec {$HPPEMIT OPENNAMESPACE}.
  • {$HPPEMIT NOUSINGNAMESPACE}
    Cela indique au compilateur Delphi de ne pas générer le "<nom-unité> avec l'espace de nommage>;" que l'on voit habituellement à la fin du .HPP généré à partir d'une l'unité .PAS. Cette directive évite de polluer l'espace de nommage global et peut être très utile pour éviter les ambiguïtés. Le même effet peut être obtenu en définissant la macro DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE. Toutefois, ceci peut provoquer des pannes lorsque le code n'utilise pas de noms qualifiés (par exemple, dans les gestionnaires d'événement générés par l'EDI).

Voir aussi