在一些 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 中完成。