XL C がサポートする各々のデータ型は、プラットフォーム固有のデフォルト位置合わせモードに従って、 バイト境界に沿って位置合わせされます。AIX® では、デフォルトの位置合わせモードは power または full です。これらは同等のものです。
ユーザーは下記のいずれかの仕組みを使用して、デフォルトの位置合わせモードを変更することができます。
この方法を使用するには、コンパイル時に、表 1 にリストされているいずれかのサブオプションとともに、-qalign コンパイラー・オプションを指定します。
この方法を使用するには、表 1 にリストされているいずれかのサブオプションとともに、ソース・ファイル内で #pragma align ディレクティブまたは #pragma options align ディレクティブを指定します。 各ディレクティブは、別のディレクティブが出現するまで、またはコンパイル単位の終わりまで、 そのディレクティブ以降のすべての変数で有効な位置合わせモードを変更します。
有効な位置合わせモードの各々は 表 1 に定義済みで、 すべてのデータ型のスカラー変数について位置合わせ値としてバイト数を提供します。 32 ビット・モードと 64 ビット・モードに違いがある場合は、それらも示されます。また、集合体の最初 (スカラー) のメンバーと後続のメンバーの間に違いがあるときは、それらも示されます。
| データ型 | ストレージ | 位置合わせの設定 | ||||
|---|---|---|---|---|---|---|
| natural | power、full | mac68k、 twobyte3 | bit_packed2 | packed2 | ||
| _Bool (32 ビット・モード) | 1 | 1 | 1 | 1 | 1 | 1 |
| _Bool (64 ビット・モード) | 1 | 1 | 1 | サポートされない | 1 | 1 |
| char、signed char、unsigned char | 1 | 1 | 1 | 1 | 1 | 1 |
| wchar_t (32 ビット・モード) | 2 | 2 | 2 | 2 | 1 | 1 |
| wchar_t (64 ビット・モード) | 4 | 4 | 4 | サポートされない | 1 | 1 |
| int、unsigned int | 4 | 4 | 4 | 2 | 1 | 1 |
| short int、unsigned short int | 2 | 2 | 2 | 2 | 1 | 1 |
| long int, unsigned long int (32 ビット・モード) | 4 | 4 | 4 | 2 | 1 | 1 |
| long int, unsigned long int (64 ビット・モード) | 8 | 8 | 8 | サポートされない | 1 | 1 |
| _Decimal32 | 4 | 4 | 4 | 2 | 1 | 1 |
| _Decimal64 | 8 | 8 | 8 | 2 | 1 | 1 |
| _Decimal128 | 16 | 16 | 16 | 2 | 1 | 1 |
| long long | 8 | 8 | 8 | 2 | 1 | 1 |
| float | 4 | 4 | 4 | 2 | 1 | 1 |
| double | 8 | 8 | 注を参照 1 | 2 | 1 | 1 |
| long double | 8 | 8 | 注を参照 1 | 2 | 1 | 1 |
| long double with -qldbl128 | 16 | 16 | 注を参照 1 | 2 | 1 | 1 |
| pointer (32 ビット・モード) | 4 | 4 | 4 | 2 | 1 | 1 |
| pointer (64 ビット・モード) | 8 | 8 | 8 | サポートされない | 1 | 1 |
| vector types | 16 | 16 | 16 | 16 | 1 | 1 |
| 注:
|
||||||
集合体の位置合わせでは、集合体全体の位置合わせの規則を説明して、集合体レイアウトの実例を提供しています。 ビット・フィールドの位置合わせでは、その他の規則と、 ビット・フィールドの使用と位置合わせに関する考慮事項について説明し、 ビット・パック位置合わせの例を示します。