Fortran 2003 モジュールで という型を定義していますが、後で、型のオブジェクトを唯一の引数としてt_savepoint
受け取る というサブルーチンのインターフェイスを定義したいと考えています。fs_initializesavepoint
t_savepoint
モジュール全体のコードは次のとおりです。
module m_serialization
implicit none
type :: t_savepoint
integer :: savepoint_index
real :: savepoint_value
end type t_savepoint
interface
subroutine fs_initializesavepoint(savepoint)
type(t_savepoint) :: savepoint
end subroutine fs_initializesavepoint
end interface
end module m_serialization
このようなインターフェースが必要な理由は、後でこの fortran モジュールを C と相互運用できるようにするためです。
これをコンパイルしようとすると (gfortran-4.7.0)、次のエラー メッセージが表示されます。
type(t_savepoint) :: savepoint
1
Error: The type of 'savepoint' at (1) has not been declared within the interface
サブルーチン内で型の定義を移動すると、エラーは消えます。しかし、多くのサブルーチン内で同じ型を使用したい場合、それらすべてで定義を繰り返す必要がありますか?
前もって感謝します。
EDIT : 解決策は、型の定義を別のモジュールに移動してuse
から、すべてのサブルーチンでそれに移動することです。t_savepoint
ただし、型とサブルーチンは同じ概念上のトピックの一部であるため、このソリューションはあまり好きではありません。