align

 

特定のデータ項目のアライメント方法をコンパイラーに指示します。

IDE オプション

Windows: [Data (データ)] > [Structure Member Alignment (構造体メンバーのアライメント)] (/align:recnbyte)

[Data (データ)] > [Common Element Alignment (共通要素のアライメント)] (/align:[no]commons/align:[no]dcommons)

[Data (データ)] > [SEQUENCE Types Obey Alignment Rules (SEQUENCE 型をアライメント規則に従わせる)] (/align:[no]sequence)

Linux: なし

Mac OS X: [Data (データ)] > [Struct Member Alignment (構造体メンバーのアライメント)] (-align rec<1,2,4,8,16>byte)

[Data (データ)] > [Common Element Alignment (共通要素のアライメント)] (-align [no]commons/align:[no]dcommons)

[Data (データ)] > [SEQUENCE Types Obey Alignment Rules (SEQUENCE 型をアライメント規則に従わせる)] (-align [no]sequence)

アーキテクチャー

IA-32、インテル® 64、IA-64 アーキテクチャー

構文

Linux および Mac OS X:

-align [keyword]

-noalign

Windows:

/align[:keyword]

/noalign

引数

keyword

データ項目をアライメントする方法を指示します。設定可能な値は以下のとおりです。

none

共通ブロックまたは構造体にパディングバイトを追加しないようにします。

[no]commons

共通ブロック要素のアライメントに作用します。

[no]dcommons

共通ブロック要素のアライメントに作用します。

[no]records

派生型コンポーネントおよびレコード構造体フィールドのアライメントに作用します。

recnbyte

派生型コンポーネントおよびレコード構造体フィールドの境界を指定します。

[no]sequence

シーケンス派生型コンポーネントのアライメントに作用します。

all

必要に応じて、共通ブロックおよび構造体要素にパディングバイトを追加します。

デフォルト

nocommons

共通ブロックのアライメントにパディングバイトを追加しません。

nodcommmons

共通ブロックのアライメントにパディングバイトを追加しません。

records

派生型コンポーネントおよびレコード構造体フィールドを、デフォルトの自然境界上にアライメントします。

nosequence

ユーザーによって設定された現在のアライメント規則にかかわらず、SEQUENCE 文で宣言された派生型コンポーネントをパックします。

デフォルトでは、パディングは共通ブロックには追加されませんが、構造体には追加されます。

説明

このオプションは、一部のデータ項目をアライメントする方法を指示します。コンパイラーは、パディングバイトを追加してアライメントします。

オプション

説明

align none

共通ブロックまたは構造体にパディングバイトを追加しないようコンパイラーに指示します。これは noalign と同じです。

align commons

共通ブロックのすべてのデータ項目を、必要であればパディングバイトを追加して、最大 4 バイトまで自然境界上にアライメントします。

align nocommons オプションは、共通ブロックにパディングを追加しません。この場合、COMMON 文中のデータ項目が、サイズの大きな数値データ項目から順番に指定され、最後に文字データが指定されている場合を除き、アライメントの合っていないデータが生じる可能性があります。

align dcommons

共通ブロックのすべてのデータ項目を、必要であればパディングバイトを追加して、最大 8 バイトまで自然境界上にアライメントします。

このオプションは、共通ブロックを使用するアプリケーションに対して役立ちます。ただし、アプリケーションにアライメントの合っていないデータが全くない場合や、アライメントの合っていないデータがあってもすべてのデータ項目が 4 バイト以下である場合を除きます。すべてのデータ項目が 4 バイト以下であり、共通ブロックを使用するアプリケーションには、/align:dcommons ではなく、/align:commons を指定できます。

align nodcommons オプションは、共通ブロックにパディングを追加しません。

Windows システムでは、/stand:f90 オプションまたは /stand:f95 オプションを指定すると、/align:dcommons は無視されます。

Linux および Mac OS X システムでは、-std-stand f90-stand f95 オプションを指定すると、-align dcommons は無視されます。

align norecords

派生型コンポーネントおよびレコード構造体のフィールドを、任意の境界上にパディングを追加せずにアライメントします。

align records オプションは、レコード構造体 (拡張機能) および SEQUENCE 文のない派生型構造体に含まれる複数のデータ項目に対し、必要であればパディングバイトを追加して自然なアライメントを行うよう指定します。

align recnbyte

レコードのフィールドおよび派生型のコンポーネントを、指定された境界 (n) またはそれらが自然にアライメントされる境界のうち、サイズがより小さくなる境界でアライメントします。n は、1、2、4、8、または 16 のいずれかです。このオプションを指定すると、構造体の 2 番目以降の各メンバーが、メンバーの型のサイズまたは n バイト境界のどちらか小さいほうで格納されます。例えば、prog1.f ファイルのすべての構造体と共用体に対するパック境界またはアライメント条件として、2 バイトを指定するには、次のコマンドを指定します。ifort {-align rec2byte | /align:rec2byte} prog1.f

このオプションは、共通ブロックが自然にアライメントされるか、あるいはパックされるかどうかには影響を与えません。

align sequence

現在使用されているアライメント規則に基づいて、SEQUENCE 文で宣言された派生型コンポーネント (シーケンス・コンポーネント) をアライメントします。デフォルトのアライメント規則は、不整列のコンポーネントを自然境界上にアライメントします。

align nosequence オプションを指定すると、シーケンス・コンポーネントは他のアライメント規則に関係なくパックされます。align nonealign nosequence を意味します。

標準規格の検証オプションを指定すると、/align:sequence は無視されます。

align all

共通ブロック、派生型、および構造体の要素を自然にアライメントするために、必要であればパディングバイトを追加するようコンパイラーに指示します。align nocommons、align dcommons、align records、align nosequence を指定します。これは、keyword なしで align を指定するのと同じです。

代替オプション

align none

Linux および Mac OS X: -noalign

Windows: /noalign

align records

Linux および Mac OS X: -align rec16byte-Zp16

Windows: /align:rec16byte/Zp16

align norecords

Linux および Mac OS X: -Zp1-align rec1byte

Windows: /Zp1/align:rec1byte

align recnbyte

Linux および Mac OS X: -Zp{1|2|4|8|16}

Windows: /Zp{1|2|4|8|16}

align all

Linux および Mac OS X: -align commons -align dcommons -align records -align nosequence

Windows: /align:nocommons,dcommons,records,nosequence

関連情報