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

互換性保持のための C 構造体、型宣言、マクロ

C 構造体の CFI_dim_tCFI_cdesc_t

CFI_dim_t は、C 構造体の型宣言名です。配列の 1 つの次元の下限、範囲、メモリーストライド情報を表します。CFI_dim_t には、少なくとも次のメンバーが含まれます (順不同)。

CFI_cdesc_t は、C 構造体の宣言名で、フレキシブルな配列メンバーが含まれます。構造体の最初の 3 つのメンバーは、順に base_addrelem_lenversion です。最後のメンバーは dim です。その他のメンバーはすべて versiondim の間になければなりません。

配列ポインターまたは割付け配列の C 記述子の場合、記述子の dim メンバーの各要素の下限メンバーの値は、引数の関連付け、割り当て、またはポインターの関連付けによって決まります。割付けでない非ポインター・オブジェクトの C 記述子の場合、記述子の dim メンバーの各要素の下限メンバーの値は 0 です。

大きさ引き継ぎ配列の C 記述子の場合、dim メンバーの最後の要素の範囲メンバーの値は -1 です。Fortran CHARACTER オブジェクトの elem_len の値は、文字長 × その種別の 1 文字のバイト数です。種別が C_CHAR の場合、値は文字長と等しくなります。

ISO_Fortran_binding.h にあるマクロと型宣言

CFI_CDESC_T を除いて、ISO_Fortran_binding.h で定義されている各マクロは、#if 前処理ディレクティブでの使用に適した整数定数式 (1 トークンまたは括弧で囲まれた式のいずれか) に展開されます。

CFI_CDESC_T は関数のようなマクロです。引数として作成する C 記述子のランクを受け取り、そのランクの C 記述子として使用する変数を定義するため、適切なサイズとアライメントの修飾されていない型に評価します。引数は、0 以上 CFI_MAX_RANK 以下の値の整数定数式です。CFI_CDESC_T で宣言された変数へのポインターは、CFI_cdesc_t * にキャストできます。CFI_CDESC_T で宣言された変数には、初期化子が必要です。

CFI_CDESC_T マクロは、C 記述子にメモリーを提供します。マクロで宣言されたエンティティーのアドレスは、明示的にキャストしない限り、CFI_cdesc_t * 型の仮引数に対応する実引数では使用できません。

CFI_index_t は、2 つのポインターの減算結果を表すことができる符号付き整数型の型宣言名です。

CFI_MAX_RANK マクロの値は、サポートされる最大ランク (31) です。CFI_rank_t は、サポートされる最大ランクを表すことができる整数型の型宣言名です。

CFI_VERSION マクロの値はプロセッサー依存で、このマクロを含む ISO_Fortran_binding.h ソースファイルのバージョンをエンコードします。ソースファイルの新しいバージョンが以前のバージョンと互換性がない場合、この値は大きくなります。

CFI_attribute_t は、属性コードの値を表すことができる整数型の型宣言名です。

CFI_type_tは、サポートされる型指定子の値を表すことができる整数型の型宣言名です。

以下の表のマクロは、エラーコードとして使用されます。CFI_SUCCESS マクロは、整数定数 0 です。その他のマクロの値は非ゼロで、ほかのエラーコード・マクロの値とは異なります。

エラーコード・マクロ

マクロ名

エラー状態

CFI_SUCCESS エラーは検出されませんでした。
CFI_ERROR_BASE_ADDR_NULL C 記述子のベースアドレス・メンバーが、非 NULL ポインターを必要とするコンテキストで NULL ポインターです。
CFI_ERROR_BASE_ADDR_NOT_NULL C 記述子のベースアドレス・メンバーが、NULL ポインターを必要とするコンテキストで NULL ポインターではありません。
CFI_INVALID_ELEM_LEN C 記述子の要素の長さメンバーの値が無効です。
CFI_INVALID_RANK C 記述子のランクメンバーの値が無効です。
CFI_INVALID_TYPE C 記述子の型メンバーの値が無効です。
CFI_INVALID_ATTRIBUTE C 記述子の属性メンバーの値が無効です。
CFI_INVALID_EXTENT CFI_dim_t 構造体の範囲メンバーの値が無効です。
CFI_INVALID_DESCRIPTOR C 記述子が無効です。
CFI_ERROR_MEM_ALLOCATION メモリー割り当てに失敗
CFI_ERROR_OUT_OF_BOUNDS 参照が範囲外です。

関連情報