bob*_*nto 5 fortran module circular-dependency
我知道 FORTRAN 中模块的循环依赖是被禁止的。但我想知道这种禁令有多强烈。假设我有:
module mod1
integer, public :: i,j,k
use mod2, only: m
end module mod1
Run Code Online (Sandbox Code Playgroud)
和
module mod2
integer, public :: l,m,n
use mod1, only: j
end module mod2
Run Code Online (Sandbox Code Playgroud)
在我看来,这在逻辑意义上避免了循环,但这并不意味着标准允许它。应该有效吗?
如果是这样,我在编译时就会遇到麻烦,因为 mod1 当然想要看到 mod2,反之亦然。有没有解决的办法?
不,它不应该起作用。该标准规定,当看到 USE 时,模块必须“可用”。如果在看到“use mod2”时 mod2 尚未编译,则构建将失败。(有些编译器可能允许您使用稍后在同一源中定义的模块,有些则不允许。)您也许可以使用子模块(请参阅https://software.intel.com/en-us/blogs/2015/07 /07/doctor-fortran-in-we-all-live-in-a-yellow-submodule)来完成你想要的 - 我不知道,因为显然你发布的内容并不代表你的真实应用程序,而是马克的建议单独的模块更容易理解。
| 归档时间: |
|
| 查看次数: |
1263 次 |
| 最近记录: |