在 fortran 中编写模块的正确方法
Proper way to write a module in fortran
假设我有一个模块
module module_1
end module module_1
另一个使用第一个模块的模块。
- 我是这样写的(主要部分使用模块)
module module_2
use module_1
contains
function func_1
end function func_1
subroutine sub_1
end subroutine sub_1
end module_2
- 或者我应该这样写(在每个函数和子程序中使用模块)
module module_2
contains
function func_1
use module_1
end function func_1
subroutine sub_1
use module_1
end subroutine sub_1
end module_2
回答你应该做什么是完全基于意见的,因此是题外话。从技术上讲,两者皆有可能。
我们可以告诉您的是不同之处。如果您在整个模块中使用 module_1
,那么在您添加到 module_2
中的任何未来函数或子例程中也可以通过主机关联访问它。它还与使用相关,可用于 module_2
中的所有类型定义和模块变量定义。你可能想要那个,你可能不想要那个。这个决定只取决于你。我当然多次使用过任何一种可能性。
如果您有理由通过仅在函数和子例程中使用 module_1
来限制名称空间污染,请继续这样做。但是原因还得自己评价,没有万能的药方。
假设我有一个模块
module module_1
end module module_1
另一个使用第一个模块的模块。
- 我是这样写的(主要部分使用模块)
module module_2
use module_1
contains
function func_1
end function func_1
subroutine sub_1
end subroutine sub_1
end module_2
- 或者我应该这样写(在每个函数和子程序中使用模块)
module module_2
contains
function func_1
use module_1
end function func_1
subroutine sub_1
use module_1
end subroutine sub_1
end module_2
回答你应该做什么是完全基于意见的,因此是题外话。从技术上讲,两者皆有可能。
我们可以告诉您的是不同之处。如果您在整个模块中使用 module_1
,那么在您添加到 module_2
中的任何未来函数或子例程中也可以通过主机关联访问它。它还与使用相关,可用于 module_2
中的所有类型定义和模块变量定义。你可能想要那个,你可能不想要那个。这个决定只取决于你。我当然多次使用过任何一种可能性。
如果您有理由通过仅在函数和子例程中使用 module_1
来限制名称空间污染,请继续这样做。但是原因还得自己评价,没有万能的药方。