我正在编写一些 fortran 调用 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 和逻辑。
iso_c_binding 的确切用途是什么?有什么陷阱吗?例如,这提到了通过绑定使用字符串时的警告(请参阅“不幸的是,至少在 GNU 和 Intel 编译器上,声明”部分)。