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 がユーザー定義型の一部ではない場合、明示的なインターフェイスが必要になることはわかっています...割り当て可能な配列をユーザー定義型に配置すると、明示的なインターフェイスの必要性がなくなりますか? このコードと互換性のある Fortran 標準のバージョン (F90、F95、F2003 ...) がある場合、どのバージョンですか?

4

1 に答える 1

2

割り当て可能なコンポーネントは、Fortran 2003 標準に組み込まれた TR15581 から F95 で定義されています。これには明示的なインターフェイスは必要ありません。タイプ定義の使用関連付けだけで問題ありません。配列を渡すのではなく、その周りの構造を渡します。

于 2013-02-21T07:33:50.143 に答える