一般コンパイラ指示文:構造型 (および記録構造体項目) のメモリー開始アドレスを指定します。
形式
cDEC$ PACK:[{1 | 2 | 4}]
c
次のいずれか:C (または c),!,* (「一般コンパイラ指示文の構文規則」を参照)
規則と振る舞い
構造型と記録構造体の項目は,メモリー内で項目の型の大きさと現在の位置合わせ設定のどちらか小さい方の大きさで位置合わせが行われます。現在の位置合わせ設定は 1,2,4,または 8 バイトです。基本初期設定は 8 バイトです (/alignment または /vms を指定していない限り)。位置合わせ設定の値を減らすことで,変数をメモリー内でより密接に詰め込むことができます。
PACK 指示文を使うと,現在のメモリー位置合わせ設定を無効にして,プログラム中の構造型または記録構造体項目の詰め込みを制御することができます。
たとえば,cDEC$ PACK:1 が指定されていると,すべての変数は,奇数であるか偶数であるかを問わず,次の使用可能なバイトから始まります。これは参照時間を若干増やしますが,メモリー空間は無駄になりません。cDEC$ PACK:4 が指定されていると,INTEGER(1),LOGICAL(1),およびすべての文字変数が,奇数であるか偶数であるかを問わず,次の使用可能なバイトから始まります。INTEGER(2) と LOGICAL(2) は次の偶数バイトから始まり,それ以外のすべての変数は 4 バイト境界から始まります。
PACK 指示文が数値なしで指定された場合,詰め込みはコンパイラ・オプションの設定 (指定されていた場合),または基本設定である 8 に戻されます。
この指示文は,プログラム中で,構造型定義または記録構造体定義の前の任意の場所に置くことができます。構造型定義または記録構造体定義の中に置くことはできません。
次の形式も使用できます:!MS$PACK:[{1|2|4}]
互換性
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
関連情報
STRUCTURE...END STRUCTURE,UNION...END UNION,一般コンパイラ指示文,構造型
例
! この構造型に対して 4 バイトの詰め込みを使います。 ! PACK は,構造型定義の外で使われることに注意してください。 !DEC$ PACK:4 TYPE pair INTEGER a, b END TYPE ! 基本またはコンパイラ・オプションの指定に戻します。 !DEC$ PACK: