外部子程序和隐式接口

当子程序不包含在主程序中,也不包含在模块或 antoher 子程序中时,它被认为是外部的。特别是它可以通过除 Fortran 之外的编程语言来定义。

当调用外部子程序时,编译器无法访问其代码,因此编译器允许的所有信息都隐式包含在调用程序的调用语句中,并且在类型中包含实际参数的属性,而不是伪参数(其声明是编译器未知的)。在这种情况下,我们说接口是隐式的

external 语句可用于指定过程的名称相对于外部过程,

external external_name_list

但即便如此,界面仍然隐含着。

interface 块可用于指定外部过程的接口,

interface
  interface_body
end interface

interface_body 通常是过程头的精确副本,后面是声明所有参数,如果是函数,则是结果的声明。

例如,对于功能 WindSpeed

real function WindSpeed(u, v)
  real, intent(in) :: u, v
  WindSpeed = sqrt(u*u + v*v)
end function WindSpeed

你可以编写以下界面

interface
  real function WindSpeed(u, v)
    real, intent(in) :: u, v
  end function WindSpeed
end interface