作爲此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