【发布时间】:2017-11-14 05:44:01
【问题描述】:
如何使用use module, ONLY:语句在模块之间包含派生数据类型(类型,而不是变量)?
更多描述:在我的module1 中,我定义了该数据类型的派生数据类型(我们称之为my_datatype)和一些数据(我们称之为my_data)。在我的module2 中,我需要使用my_data。由于我的 module1 包含许多 module2 不需要的过程,我想使用 ONLY 语句只包含 my_data。但是,如果不包括数据类型,它会给我错误:
Derive datatype 'my_type' is used before defined at "type(my_type),intent(out)::A"
很明显module2不能识别module1中定义的my_datatype,因为我没有通过。但是在“仅使用模块”语句中包含派生类型的语法是什么?我正在使用 Fortran 2003。
module step1
implicit none
type my_type
integer::id
integer,dimension(2)::my_data
end type my_type
type(my_type)::A
end module step1
module step2
use step1,only:A
implicit none
contains
subroutine change_A(A)
type(my_type),intent(inout)::A
A%id = 1
A%my_data(1) = 1
A%my_data(2) = 2
end subroutine change_A
end module step2
program test
! program is in a different folder
use step1
use step2
implicit none
call change_A(A)
end program test
【问题讨论】:
-
欢迎。请在您的问题中发布真实代码。特别是在显示任何错误消息时这样做。此外,显示complete 错误消息。请参阅 How to Ask 和 minimal reproducible example。如果我删除废话并将
my_data%i = 1添加到do_something_to_my_data中,您显示的代码编译得很好。您不需要范围内的数据类型来处理变量。 -
谢谢弗拉基米尔。我已按照建议修改了问题。
标签: types module fortran derived