alignof 演算子

__alignof__ 演算子は、オペランドの位置合わせに使用されたバイト数を戻します。言語フィーチャーは、 C89 および C99 に対して直交です。オペランドは式、または型の括弧付きの ID とすることができます。 オペランドが左辺値を表す式である場合、__alignof__ によって戻される数は、左辺値が持つと認知されている位置合わせを表します。式の型は コン パイル時に決定されますが、式自体の評価は行われません。オペランドが型である場合、 通常、ターゲット・プラットフォーム上の型に必要な位置合わせを表します。

__alignof__ 演算子を次の項目に適用することはできません。

__alignof__ 式の形式は、次のとおりです。

>>-__alignof__--+-unary_expression-+---------------------------><
                '-(--type-id--)----'
 
 

type-id が参照であるか、または参照されるタイプである場合、結果は 参照されるタイプの位置合わせです。type-id が配列である場合、結果は 配列エレメント型の位置合わせです。type-id が基本型である場合、結果は インプリメンテーションでの定義によります。

例えば Linux の場合、__alignof__(long) は 、32 ビット・モードでは 4 を戻し 、64 ビット・モードでは 8 を戻します。

AltiVec 言語拡張機能が使用可能になっていれば、__alignof__ のオペランドはベクトル型とすることができます。 例えば、次のような場合です。

vector unsigned int v1 = (vector unsigned int)(10);
vector unsigned int *pv1 = &v1;
__alignof__(v1); // vector type alignment: 16.
__alignof__(&v1); // address of vector alignment: 4.
__alignof__(*pv1); // dereferenced pointer to vector alignment: 16.
__alignof__(pv1); // pointer to vector alignment: 4.
__alignof__(vector signed char); // vector type alignment: 16.

__attribute__((aligned)) を使用して、ベクトル型の変数の位置合わせを増加させる場合、__alignof__ 演算子によって戻される値は、__attribute__((aligned)) によって指定される位置指定係数です。

関連参照

IBM Copyright 2003