Solaris 動的トレースガイド

メンバーのサイズとオフセット

演算子 sizeof を使用すると、構造体や共用体を含むあらゆる D 型 (D 式) のサイズ (バイト単位) を特定できます。演算子 sizeof は、式または丸括弧で囲まれた形式の型名に適用できます。次の 2 つの例を参照してください。

sizeof expression				sizeof (type-name)

たとえば、式 sizeof (uint64_t) の戻り値は 8 です。式 sizeof (callinfo.ts) も、先ほどのプログラム例のソースコードに挿入した場合、8 を返します。演算子 sizeof の正式な戻り型は、size_t です。これは、バイト数を表現する際に使用される型の別名であり、定義により、現在のデータモデル内のポインタと同じサイズの符号なし整数になります。式に演算子 sizeof を適用した場合、この式は D コンパイラによって評価されますが、結果のオブジェクトサイズはコンパイル時に計算され、式のコードは生成されません。sizeof は、整数定数が必要な箇所で使用できます。

同様の演算子 offsetof を使って、構造体型または共用体型のオブジェクトに関連付けられた記憶域の開始位置から、構造体メンバーまたは共用体メンバーのオフセットをバイト単位で特定することもできます。演算子 offsetof は、次の形式の式で使用します。

offsetof (type-name, member-name)

type-name は構造体型の名前、共用体型の名前、またはこれらの型の別名で、member-name はその構造体または共用体のメンバーの名前を示す識別子です。offsetof は、sizeof と同様に、size_t を返し、D プログラム内の整数定数を使用できる箇所で使用できます。