gpt4 book ai didi

module - 多次包含一个模块

转载 作者:行者123 更新时间:2023-12-04 10:55:51 27 4
gpt4 key购买 nike

假设我有一个模块,它定义了一些基本常量,例如

integer, parameter :: i8 = selected_int_kind(8)

如果我将它包含在我的主程序中,并且我还包含一个执行其他操作的模块(调用此模块 functions )但是 functions还有 use小号 constants ,那么我是否本质上包括 constants在我的主程序中两次?

如果是这样,这很糟糕吗?在程序中包含太多次模块会很危险吗?

最佳答案

不,这样做很好。您使用 use 所做的一切声明通过使用关联提供对模块中定义的变量和函数的访问。这不像每次声明变量都是use 'd (但实际上它们已被重新声明)。

唯一需要注意的是循环依赖,其中模块 A使用模块 B和模块 B使用模块 A .这是不允许的。

编辑:来自梅特卡夫等人。 Fortran 95/2003 解释,第 1 页。 72:

A module may contain use statements that access other modules. It must not access itself directly or indirectly through a chain of use statements, for example a accessing b and b accessing a.



虽然这句话没有直接回答你的问题,但它重申了你唯一不能做的就是有一个循环依赖。所以以下是完全有效的:
module one_def
implicit none
integer, parameter :: one=1
end module one_def

module two_def
use one_def, only : one
implicit none
integer, parameter :: two=one+one
end module two_def

program test
use one_def, only : one
use two_def, only : two
implicit none

print*, two == one+one ! This prints .True.

end program

关于module - 多次包含一个模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9129732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com