首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Fortran2003中,一维假定形状数组是否可与C互操作?

在Fortran2003中,一维假定形状数组是否可与C互操作?
EN

Stack Overflow用户
提问于 2016-07-13 10:44:25
回答 1查看 399关注 0票数 1

在Fortran 2003中,可分配数组是,而不是C可互操作的,我认为这与存储在内存中的额外数组信息有关,这可能会干扰C解释。

但是,如果我将一个虚拟参数声明为一维假设的形状数组呢?例如

代码语言:javascript
复制
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中的接口可能类似于

代码语言:javascript
复制
interface
function some_c_function(a)
integer(c_int) :: a(*)
end interface

在C语言中,原型可能

代码语言:javascript
复制
int some_c_function(int *a)

这是否符合Fortran 2003标准?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-13 12:59:06

C可互操作子程序不能假定形状参数,但可以将假定的形状数组(或任何其他)传递给具有假定大小参数(a(*))的可互操作子程序。如果数组不是连续的,则编译器可能必须创建临时数组才能这样做。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38349435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档