Tag: 派生类型

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。 解决方案可以在这里看到。 然而,这里它不仅仅是一个派生类型,它是一个派生类型,其成员本身就是派生类型。 我是否需要为每个Y成员创建COMPLEXF子程序,即SETY_A,QUERYY_A,SETY_B,QUERYY_BSIZE,SQUERYY_B等? 或者有更好的方法来解决这个问题吗?

Fortran派生类型,包含可从C访问的指针

我有一个Fortran代码,其中包含许多包含指针的派生类型。 我正在编写一个需要访问这些变量的C ++代码。 我不能在没有指针的情况下重写这些派生类型,因为它们在Fortran代码的数百个不同的地方使用。 以下是示例代码: module simple use iso_c_binding TYPE,bind(C) :: SIMPLEF INTEGER :: A INTEGER, POINTER :: B, C(:) END TYPE SIMPLEF end module simple 我需要从C访问SIMPLEF派生类型。我知道我不能使用它,因为Fortran指针不能在派生类型中,如果它应该可以从C访问。有任何解决方法吗? EXTENSION:作为前一个问题的扩展(由于IanH解决了),我已经派生出了具有成员派生类型的类型。 示例如下: TYPE COMPLEXF INTEGER :: X TYPE (SIMPLEF) :: Y END TYPE COMPLEXF 我是否需要为每个Y成员创建COMPLEXF子程序,即SETY_A,QUERYY_A,SETY_B,QUERYY_BSIZE,QUERYY_B等? 或者有更好的方法来解决这个问题吗?