我在谷歌找不到任何东西,所以......
我尝试使用Fortran 90的所有面向对象的功能,并为某些特定的工作创建模块(比如C ++中的类)。我写过这样的话:
module test
integer, PRIVATE :: dummy
PUBLIC :: sub
contains
subroutine sub()
dummy = 1
end subroutine sub
end module test
但是,我有大约10个这样的子程序,将它们全部放在一个文件中是非常糟糕的。是否有可能告诉编译器,sub
是模块子例程,但是将它放在另一个文件中?因为,看起来这个代码只有在我定义sub
的主体时才会被编译。
答案 0 :(得分:1)
有可能。我不知道它是否好,但它是可能的。您可以使用include "filename"
或使用预处理器#include "filename"
。
这样,您可以在include
语句的位置包含来自任何其他文件的文本。但这是有争议的,如果它是一个积极的事情,因为一个文件中的10个程序通常不是太多,如果它们不是很长(并且你可能应该更改它们)。
(我必须要小心,上次我提到包含可能是因为不喜欢它的人强烈反对。)
另请注意,Fortran 2003带来了更多面向对象,包括类型绑定过程,如果您需要更多对象实例,则可能值得考虑。