fortran66のブログ

fortran について書きます。

【メモ帳】iso_fortran_binding.h のあるディレクトリ

Fortran 2018 C 側で include

Fortran 2018 では Fortran の allocatable arrary などを C 側で利用するための C 用のヘッダファイルが定義されました。

Intel Fortran では以下のディレクトリ位置に置かれていました。

C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019\windows\compiler\include

gfortran ではどこにあるのかよく分かりませんでした。
gcc.gnu.org

Note: Currently, GNU Fortran does not use internally the array descriptor (dope vector) as specified in the Technical Specification, but uses an array descriptor with different fields. Assumed type and assumed rank formal arguments are converted in the library to the specified form. The ISO_Fortran_binding API functions (also Fortran 2018 18.4) are implemented in libgfortran. Alternatively, the Chasm Language Interoperability Tools, http://chasm-interop.sourceforge.net/, provide an interface to GNU Fortran’s array descriptor.

GNU用 sourceryinstitute 版

github.com

「The Future of Fortran」Doctor Fortran

結構前の記事なので忘れていましたが、type(*) や iso_fortran_binding.h などについて触れています。
www.isus.jp

C 記述子は Fortran 標準規格から派生したもので、形状、型、ALLOCATABLE/POINTER 属性などのプロシージャー引数に関する拡張情報を通信するための標準に準拠した方法を定義します。標準規格では、C 記述子のアクセスおよび操作用に、C 記述子の typedef、さまざまなメンバーの値のマクロ、関数の定義を宣言する、ISO_Fortran_binding.h という名前の C ヘッダーファイルを Fortran 実装で提供することを明示しています。記述子の変更は、これらの関数のいずれかを使用して行います。すべての typedef、マクロ、関数は「CFI_」で始まります。重要なポイントは、標準規格では C 記述子のレイアウトについていくつかの制限を定義していますが、実装依存のメンバーおよびメンバーの順序に余地が残されていることです。このため、C 記述子が異なる Fortran 実装間で必ず交換できるとは限りません。この状況でも、ベンダー拡張に依存しない、Fortran と C が混在するアプリケーションを作成することは可能です。

Modern Fortran Explained: Incorporating Fortran 2018 (Numerical Mathematics and Scientific Computation)

Modern Fortran Explained: Incorporating Fortran 2018 (Numerical Mathematics and Scientific Computation)