OBJTYPENAME 指令(Delphi)
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' は基底型から継承