【发布时间】:2016-11-15 21:48:46
【问题描述】:
在 Fortran 2003 中,可分配数组不可与 C 互操作。我想这与存储在内存中的其他数组信息有关,这可能会干扰 C 解释。
但是如果我将一个虚拟参数声明为一维假定形状数组呢?例如
subroutine outter_subroutine(ma, size_ma)
integer :: size_ma
integer :: ma(size_ma)
call fortran_subroutine(ma)
end subroutine
!-----------------------------
subroutine fortran_subroutine(a)
integer, intent(in) :: a(:)
integer,(kind=c_int):: ierr
...
ierr = some_c_function(a)
...
end subroutine
fortran中的接口可能会喜欢
interface
function some_c_function(a)
integer(c_int) :: a(*)
end interface
在 C 语言中,原型可能
int some_c_function(int *a)
这是否符合 Fortran 2003 标准?
【问题讨论】:
标签: fortran dynamic-arrays fortran-iso-c-binding fortran2003