私はいくつかの fortran-calling-C コードに取り組んでおり、iso_c_binding モジュールの使用について不明です。
私は fortran と C のインターフェイスを iso_c_bindingなしで正常に動作させています。問題は、関数と変数を明示的にバインドする必要があるかどうかです。たとえば、これは機能します:
program testprog
...
interface
subroutine c_parser(param)
integer, intent(in) :: param
end subroutine
end interface
integer :: a
call c_parser(a)
..
end program
/****************/
void c_parser_ (int* param)
したがって、C 関数にアンダースコアを追加し、その関数へのインターフェイスを記述して、それを fortran プログラムから呼び出します。私はポインターや割り当て可能変数を使用しません。すべてのコードには、fortran サブルーチンから C に移動する必要がある int、char、float、logical があります。
iso_c_binding の正確な目的は何ですか? 落とし穴はありますか?例として、これはバインディングを介して文字列を使用する場合の警告に言及しています (「残念ながら、少なくとも GNU および Intel コンパイラでは、ステートメント」の部分を参照してください)。