我对在模块内使用接口块以及使用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块有什么问题吗?两者是否等效?我应该使用哪种方法?也许所有这些问题都可以用一个大的"取决于"来回答,但我希望你能解释它们之间的区别。提前谢谢。