OBJTYPENAME 指令(Delphi)

提供: RAD Studio
移動先: 案内検索

Delphi コンパイラ指令のリスト:インデックス への移動


種類

パラメータ

構文

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

デフォルト

{$APPTYPE GUI}

スコープ

グローバル

$OBJTYPENAME の用途は 2 つあります。$OBJTYPENAME は、次のように使用することができます。

  • .obj ファイルの作成時に型名を定義する。
  • 内部指令として、型の名前をマングルする方法を Delphi コンパイラに指示する。そのマングル処理は C++ コンパイラのマングル処理と一致する必要があるため、このオプションは、Delphi と C++ で型のマングル方法が異なる場合にのみ使用します。


構文では、以下のように、'typeNameInObj' の前に 'B' か 'N' のどちらかを付ける必要があります。

  • {$OBJTYPENAME typeIdent} // 必要に応じて名前空間を付けて typeIdent を出力する
  • {$OBJTYPENAME typeIdent 'Bsss'} // 名前空間を付けずに 'sss' を出力する
  • {$OBJTYPENAME typeIdent 'Nsss'} // 必要に応じて名前空間を付けて 'sss' を出力する


B を前に付ける形式は、組み込み型の生成に使用されます。たとえば、'Bul' の場合は、組み込みの unsigned long 型について 'ul' が出力されます。

N を前に付ける形式は、クラス型、構造体型、列挙型などのシンボル型を生成するのに使用されます。たとえば、System.UITypes.pas において 'NTColor' を {$NODEFINE} で指定している箇所では、'15Graphics@TColor' が出力されます。

OBJTYPENAME 指令は、{$EXTERNALSYM} 指令および {$NODEFINE} 指令で使用することができます。

これらの指令は、以下のように、エイリアス型には使用できません。

 type
   TMyIntAlias = Integer; {$OBJTYPENAME TMyIntAlias 'Bl'} // エラー
 type
   TMyIntTyped = type Integer; {$OBJTYPENAME TMyIntTyped 'Bl'} // OK
   TMyIntTyped2 = type TMyIntTyped; // 'Bl' は基底型から継承

関連項目