Directive OBJTYPENAME (Object Pascal)

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Liste des directives de compilation Object Pascal - Index


Type

Paramètre

Syntaxe

{$OBJTYPENAME typeIdent ['{B|N}typeNameInObj']}

Par défaut

{$APPTYPE GUI}

Portée

Globale

$OBJTYPENAME a une double fonction. Vous pouvez utiliser $OBJTYPENAME comme suit :

  • Pour définir le nom du type lors de la création des fichiers .obj.
  • En tant que directive interne, pour indiquer au compilateur Object Pascal comment substantyper le nom d'un type. Puisque le substantypage doit correspondre à celui du compilateur C++, cette option doit seulement être utilisée dans le cas où Object Pascal et C++ ne sont pas d'accord sur la façon de substantyper un type.


Dans la syntaxe, 'typeNameInObj' doit être préfixé avec 'B' ou 'N', comme suit :

  • {$OBJTYPENAME typeIdent} // Emettre typeIdent avec espace de nommage, si nécessaire
  • {$OBJTYPENAME typeIdent 'Bsss'} // Emettre 'sss' sans espace de nommage
  • {$OBJTYPENAME typeIdent 'Nsss'} // Emettre 'sss' avec espace de nommage, si nécessaire


La forme préfixée par B est utilisée pour générer des types intégrés. Par exemple : 'Bul' émet 'ul' pour le type long non signé intégré.

La forme préfixée par N est utilisée pour générer des types symboliques, tels que les types classe, structure et énumération. Par exemple : 'NTColor' avec {$NODEFINE} dans System.UITypes.pas émettra '15Graphics@TColor'.


La directive OBJTYPENAME peut être utilisée avec les directives {$EXTERNALSYM} et {$NODEFINE}.

Vous ne pouvez pas utiliser ces directives pour les types alias :

 type
   TMyIntAlias = Integer; {$OBJTYPENAME TMyIntAlias 'Bl'} // error
 type
   TMyIntTyped = type Integer; {$OBJTYPENAME TMyIntTyped 'Bl'} // ok
   TMyIntTyped2 = type TMyIntTyped; // 'Bl' is inherited from base type.

Voir aussi