我对在模块内使用接口块以及使用 CONTAINS 语句为模块内的过程创建“显式接口”感到有些困惑。
我通常使用模块内的接口块编写程序。例如,
MODULE ModExample
INTERFACE
SUBROUTINE Sumatory(a, b, c)
IMPLICIT NONE
INTEGER, INTENT(IN)::a
INTEGER, INTENT(OUT)::b
INTEGER, INTENT(OUT)::c
END SUBROUTINE Sumatory
END INTERFACE
END MODULE ModExample
SUBROUTINE Sumatory(a, b, c)
IMPLICIT NONE
INTEGER, INTENT(IN)::a
INTEGER, INTENT(OUT)::b
INTEGER, INTENT(OUT)::c
!Executable statements here
END SUBROUTINE Sumatory
这对我有用。但它也可以使用模块内的 CONTAINS 语句来编写,实际上这是我查阅过的 Fortran 书籍中编写示例过程的方式。
MODULE ModExample
CONTAINS
SUBROUTINE Sumatory(a, b, c)
IMPLICIT NONE
INTEGER, INTENT(IN)::a
INTEGER, INTENT(OUT)::b
INTEGER, INTENT(OUT)::c
!Executable statements here
END SUBROUTINE Sumatory
END MODOULE ModExample
那么 INTERFCE 块有什么问题呢?两者都是等效的构造吗?我应该使用这两种方法中的哪一种?也许所有这些问题都可以用一个很大的“视情况而定”来回答,但我希望你能解释一下它们之间的差异。提前致谢。