外部子程式和隱式介面

當子程式不包含在主程式中,也不包含在模組或 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