0

我有一个派生类型:

module foo
  type bar
      integer, allocatable, dimension(:) :: data
  end type bar
end module foo

现在我想bar在没有显式接口的子例程中分配数据:

program main
  use foo
  type(bar) :: mybar
  call alloc_my_bar(10,mybar)
  print*, mybar
end program

subroutine alloc_my_bar(n,mybar)
  use foo
  type(bar) :: mybar
  integer :: n
  allocate(mybar%data(n))
  mybar%data = 42
end subroutine alloc_my_bar

这似乎与 . 一起工作得很好ifort,但我知道如果 mybar 不是用户定义类型的一部分,我将需要一个显式接口...... ? 此代码与(F90、F95、F2003 ...)兼容的 fortran 标准的哪个版本(如果有)?

4

1 回答 1

2

可分配组件在 TR15581 到 F95 中定义,并被纳入 Fortran 2003 标准。为此,您不需要显式接口,只需类型定义的使用关联就可以了。您不是传递数组,而是传递它周围的结构。

于 2013-02-21T07:33:50.143 回答