作为此post的扩展,我有派生类型,它们本身具有成员派生类型。实施例下面:包含派生类型的Fortran派生类型可以从C访问
module simple
use iso_c_binding
TYPE SIMPLEF
INTEGER :: A
INTEGER, POINTER :: B, C(:)
END TYPE SIMPLEF
TYPE COMPLEXF
INTEGER :: X
TYPE (SIMPLEF) :: Y
END TYPE COMPLEXF
end module simple
目的是,如在上面的柱,具有类似的派生类型C和以能够传递值来回的Fortran。解决方案可以看到here。但是,这里不仅仅是一个派生类型,它是派生类型,其成员是派生类型本身。我是否需要为COMPLEXF创建Y的每个成员的子例程,即SETY_A,QUERYY_A,SETY_B,QUERYY_BSIZE,SQUERYY_B等?或者有更好的方法来解决这个问题吗?
感谢您的详细解答。因此,在Fortran中,我仍然可以更改COMPLEXF变量的y SIMPLEF组件,然后C将使用C_LOC安排返回更新的组件。我猜如果我想要的话,我仍然可以在这个阶段访问C端的y子组件,或者我可以将y(已经用C_LOC获得)与另一个SIMPLEF类型的变量相等,并且C中的值更新。 – Stam 2015-03-25 08:52:13