インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

align

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

構文

Linux* および macOS*:

-align [keyword[, keyword...]]

-noalign

Windows*:

/align[:keyword[, keyword...]]

/noalign

引数

keyword

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

none

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

arraynbyte

配列の境界の開始を指定します。

[no]commons

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

[no]dcommons

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

[no]qcommons

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

[no]zcommons

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

[no]records

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

recnbyte

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

[no]sequence

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

all

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

デフォルト

nocommons

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

nodcommmons

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

noqcommmons

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

nozcommmons

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

records

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

nosequence

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

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

説明

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

オプション

説明

align none

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

align arraynbyte

配列の開始位置を n バイト境界でアライメントします。n は、8、16、32、64、128、または 256 のいずれかです。n のデフォルト値は 8 です。この開始位置のアライメントは、COMMON 文中の配列を除く、すべての配列に影響します。

配列の要素間にパディングはありません。

align commons

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

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

align dcommons

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

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

align qcommons

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

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

align zcommons

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

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

align norecords

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

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

align recnbyte

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

ifort {-align rec16byte | /align:rec16byte} prog1.f

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

align sequence

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

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

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

align all

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

IDE オプション

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

[Data (データ)] > [Alignment of COMMON block entities (共通要素のアライメント)] (/align:[no]commons、/align:[no]dcommons、/align:[no]qcommons、/align:[no]zcommons)

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

[Data (データ)] > [Default Array Alignment (既定の配列アライメント)] (/align:arraynbyte)

Eclipse*: なし

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

[Data (データ)] > [Alignment of COMMON block entities (共通要素のアライメント)] (-align [no]commons、-align [no]dcommons、-align [no]qcommons、-align [no]zcommons)

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

[Data (データ)] > [Default Array Alignment (既定の配列アライメント)] (-align array<8,16,32,64,128,256>byte)

代替オプション

align none

Linux* および macOS*: -noalign

Windows*: /noalign

align records

Linux* および macOS*: -align rec16byte-Zp16

Windows*: /align:rec16byte/Zp16

align norecords

Linux* および macOS*: -Zp1-align rec1byte

Windows*: /Zp1/align:rec1byte

align recnbyte

Linux* および macOS*: -Zp{1|2|4|8|16}

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

align all

Linux* および macOS*: -align commons-align dcommons-align records-align nosequence

Windows*: /align:nocommonsdcommonsrecordsnosequence