1

如果使用 fortran 开发静态库:

该库由多个模块组成,例如“模块 a”、“模块 b”等。

每个模块都有公共变量、类型和过程。

现在,想在程序“test”中使用lib。

一种可能的方法是使用每个模块,并在链接期间提供 *.a lib 文件。例如:

program test
  use a
  use b
  ...
end program

但是如果只需要使用/包含一个模块/*.h 会更好。例如:

program test
  use all
  ...
end program

一种可能的解决方案是将过程的所有公共变量、类型和接口复制到“module all”中,并使用“module all”而不是单个模块。

但是如果修改了单个模块中的任何一个,“module all”也需要修改以适应变化。

是否有更合适的方法可以解决,或者是否有自动工具来生成“全部模块”?

非常感谢您的任何意见。

4

2 回答 2

3

我不会将各个模块中的代码复制到模块“all”中,因为正如您所说,这会在更改代码时导致额外的工作。以及出错的可能性。相反,在模块“all”中“使用”这些模块。然后,当您想要它们全部时,您“全部使用模块”。当你想要一个特定的模块时,你会使用那个模块。你必须注意的是循环模块引用,因为它是被禁止的:A 使用 B 使用 C 使用 A 是不允许的。

于 2012-04-10T05:00:48.107 回答
2

似乎最终的解决方案是使用submodule,不幸的是 gcc 不支持。

见: http: //fortranwiki.org/fortran/show/Submodules

于 2012-04-10T13:48:20.980 回答