gfortran:如果在第二个模块中使用,则找不到模块
我正在尝试使用gfortran编译以下示例代码:gfortran:如果在第二个模块中使用,则找不到模块,fortran,Fortran,我正在尝试使用gfortran编译以下示例代码: module a use b implicit none save real :: c = 2.5 end module a module b use a implicit none save real :: d = 1.5 end module b program moduletest use a use b implicit none print*, c print*, d end program moduletest 事实上,我不理
module a
use b
implicit none
save
real :: c = 2.5
end module a
module b
use a
implicit none
save
real :: d = 1.5
end module b
program moduletest
use a
use b
implicit none
print*, c
print*, d
end program moduletest
事实上,我不理解以下错误信息:
模块测试f90:2:6:
use b
1
Fatal Error: Can't open module file ‘b.mod’ for reading at (1): No such file or directory
compilation terminated.
为什么我不能在模块a中使用模块b,反之亦然?谢谢你的帮助 不允许模块的循环依赖关系。本标准规定如下: USE语句指定USE关联。USE语句是一个 引用它指定的模块。在使用语句时 处理后,指定模块的公共部分应 可用。模块不得直接或间接引用自身 间接地 根据您的示例,只有当模块
a
可用时,才能生成模块b
。但是如果模块b
可用,则只能构建模块a
。因此模块a
间接引用自身。(a
需要b
哪个需要a
哪个需要b
哪个需要a
哪个在无穷远处)
<> >重要的是要认识到,<>代码使用语句与包含C或C++等其他语言中的头文件的情况不同, < P>不允许模块的循环依赖。本标准规定如下: USE语句指定USE关联。USE语句是一个 引用它指定的模块。在使用语句时 处理后,指定模块的公共部分应 可用。模块不得直接或间接引用自身 间接地 根据您的示例,只有当模块
a
可用时,才能生成模块b
。但是如果模块b
可用,则只能构建模块a
。因此模块a
间接引用自身。(a
需要b
哪个需要a
哪个需要b
哪个需要a
哪个在无穷远处)
<> >重要的是要认识到<>代码使用语句远不同于包括其他语言的头文件,如C或C++。现在,您在这里似乎并不需要它,那么这方面对您的问题有多重要?除了循环依赖关系之外,您还需要在编译模块
a
之前编译模块b
。这就是消息可能的意思。谢谢,但尝试gfortran-c a.f90之类的方法后,我得到了相同的错误(有点):使用b 1致命错误:无法打开模块文件“b.mod”以在(1)处读取:没有这样的文件或目录这正是循环依赖点。你不能有这样的循环依赖。现在,您在这里似乎并不需要它,那么这方面对您的问题有多重要?除了循环依赖关系之外,您还需要在编译模块a
之前编译模块b
。这就是消息可能的意思。谢谢,但是尝试像gfortran-c a.f90这样的东西,我得到了相同的错误(有点):使用b 1致命错误:无法打开模块文件“b.mod”以便在(1)读取:没有这样的文件或目录这正是循环依赖点。