一部の Fortran 95 コードでは、ポインター フィールドを持つ型があります。type(foo)
コンパイル時に初期化されるモジュール変数を宣言したい。このようなもの:
module foo_module
implicit none
type foo_type
integer :: x
logical, pointer :: x_flag => null()
end type foo_type
logical, target :: bar_flag
! this does not compile of course:
type(foo_type) :: bar = foo_type(1, bar_flag)
end module foo_module
上記のスニペットはコンパイルされません。bar
次のような別のサブルーチンを使用して、実行時に初期化できることを理解しています。
module foo_module
implicit none
type foo_type
integer :: x
logical, pointer :: x_flag => null()
end type foo_type
logical, target :: bar_flag
type(foo_type) :: bar
contains
subroutine init()
bar%x = 1
bar%x_flag => bar_flag
end subroutine init
end module foo_module
しかし、初期化サブルーチンなしでこれを行うことは可能ですか? または、コンパイラによって明示的に呼び出される初期化サブルーチンを宣言することは可能ですか? 注: これは Fortran 95 で行う必要があります。