ISO_C_BINDING モジュールは、C 型、C データ・ポインターに対応する派生型 C_PTR、C 関数ポインター型に対応する 派生型 C_FUNPTR、および 4 つのプロシージャーと 互換性のあるデータ表示の kind 型付きパラメーターを表す、名前付き定数への アクセスを提供します。
表 27 は、Fortran 組み込み型と C 型との相互運用可能性を示しています。
特定の kind 型付きパラメーター値を持つ
Fortran 組み込み型は、型と kind 型付きパラメーター値が C 型と同じ行に
リストされている場合に、C 型と相互運用可能です。
文字型の場合に、相互運用を可能にするには、1 の値を持つ初期化式によって長さ型付きパラメーターを
省略したり、指定したりする必要もあります。
また、表にリストされている C 型と
相互運用可能な Fortran 型と型付きパラメーターの組み合わせは、リストされている
C 型と互換性のある無条件の C 型とも相互運用可能です。
Fortran 型 |
名前付き定数 (kind 型付きパラメーター) | 値 | C 型 |
---|---|---|---|
|
|
|
|
INTEGER | C_SIGNED_CHAR | 1 | signed char |
| C_SHORT | 2 | short |
| C_INT | 4 | int |
| C_LONG |
4 (-q32 を指定) 8 (-q64 を指定) | long |
| C_LONG_LONG | 8 | long long |
| C_SIZE_T |
4 (-q32 を指定) 8 (-q64 を指定) | size_t |
| C_INTPTR_T |
4 (-q32 を指定) 8 (-q64 を指定) | intptr_t |
| C_INTMAX_T | 8 | intmax_t |
| C_INT8_T | 1 | int8_t |
| C_INT16_T | 2 | int16_t |
| C_INT32_T | 4 | int32_t |
| C_INT64_T | 8 | int64_t |
| C_INT_LEAST8_T | 1 | int_least8_t |
| C_INT_LEAST16_T | 2 | int_least16_t |
| C_INT_LEAST32_T | 4 | int_least32_t |
| C_INT_LEAST64_T | 8 | int_least64_t |
| C_INT_FAST8_T | 1 | int_fast8_t |
| C_INT_FAST16_T | 4 | int_fast16_t |
| C_INT_FAST32_T | 4 | int_fast32_t |
| C_INT_FAST64_T | 8 | int_fast64_t |
|
|
|
|
REAL | C_FLOAT | 4 | float |
| C_DOUBLE | 8 | double |
| C_LONG_DOUBLE | 16 | long double |
| C_FLOAT_COMPLEX | 4 | float _Complex |
| C_DOUBLE_COMPLEX | 8 | double _Complex |
| C_LONG_DOUBLE_COMPLEX | 8 | long double _Complex |
|
|
|
|
LOGICAL | C_BOOL | 1 | _Bool |
|
|
|
|
CHARACTER | C_CHAR | 1 | char |
たとえば、C_SHORT の kind 型付きパラメーターを持つ整数型は、C 型の short または (typedef を介して) short から派生した任意の C 型と相互運用可能です。
注:
エスケープ・シーケンスを使用して表される一般的な一部の C 文字との互換性を
確保するには、次の文字定数を指定します。
Fortran 名前付き定数 | 定義 | C 文字 |
|
---|---|---|---|
C_NULL_CHAR | ヌル文字 | '¥0' |
|
C_ALERT | アラート | '¥a' |
|
C_BACKSPACE | バックスペース | '¥b' |
|
C_FORM_FEED | 用紙送り | '¥f' |
|
C_NEW_LINE | 改行 | '¥n' |
|
C_CARRIAGE_RETURN | 改行 | '¥r' |
|
C_HORIZONTAL_TAB | 水平タブ | '¥t' |
|
C_VERTICAL_TAB | 垂直タブ | '¥v' |
|
定数 C_NULL_PTR の型は C_PTR で、C のヌル・データ・ポインターの値を持ちます。 定数 C_NULL_FUNPTR の型は C_FUNPTR で、C のヌル関数ポインターの値を持ちます。
型 C_PTR は、任意の C データ・ポインター型と相互運用可能です。 型 C_FUNPTR は、任意の C 関数ポインター型と相互運用可能です。 これらは両方とも、プライベート・コンポーネントを持つ派生型です。
C プロシージャー引き数は、C アドレスという形で定義されることがよくあります。 ISO_C_BINDING モジュールは、以下のプロシージャーを提供します。 Fortran プログラムが C アドレスを比較できるように、C_ASSOCIATED 関数を指定します。 C_F_POINTER サブルーチンは、Fortran ポインターを C ポインターの ターゲットと関連付ける方法を提供します。 Fortran アプリケーションが C 機能で使用するための適切な値を判別できるように、C_FUNLOC および C_LOC 関数を指定します。
目的
C_PTR_1 の関連状況、または C_PTR_1 と C_ PTR_2 が 同じエンティティーと関連付けられているかどうかを示します。
クラス
照会関数
引き数の型と属性
結果の値と属性
デフォルトの論理値
結果の値
目的
データ・ポインターを C ポインターのターゲットに関連付け、その形状を指定します。
クラス
サブルーチン
引き数の型と属性
規則
CPTR の値が、相互運用可能なデータ・エンティティーの C アドレスである 場合は、次のようになります。
その他の場合は、CPTR の値は、相互運用不可能な引き数 X を持つ C_LOC への参照の 結果になります。 C_LOC への参照の後 RETURN または END ステートメントが実行されるため、X (またはそのターゲット) を割り当て解除したり、未定義にしたりすることはできません。 FPTR は、X と同じ型および 型付きパラメーターを持つ非ポリモアフィックのスカラー・ポインターです。 これは、X (または X がポインターである場合は そのターゲット) に関連付けられるポインターになります。
目的
関数ポインターの C アドレスを戻します。
クラス
照会関数
引き数の型と属性
結果の値と属性
型 C_FUNPTR のスカラー
結果の値
引き数の C アドレスを表す型 C_FUNPTR の値です。
目的
引き数の C アドレスを戻します。
クラス
照会関数
引き数の型と属性
結果の値と属性
型 C_PTR のスカラー
結果の値