這是一個fortran90函數,我在主程序中有。正如你可以看到幾個變量類型,例如ZLAMS沒有在頂部聲明。但是gfortran 5.2並沒有報告任何錯誤。但是,如果我將此代碼移動到單獨的模塊,然後在主模塊中調用此函數,則所有未聲明的變量都會報告編譯錯誤。爲什麼?當函數變量未聲明時gfortran報告沒有編譯錯誤
REAL(kind=sp) FUNCTION ABCTEST (PHIS, LAMS, POLPHI, POLLAM)
use k_parameters,ONLY:&
sp
REAL(KIND=SP) LAMS,PHIS,POLPHI,POLLAM
DATA ZRPI18 , ZPIR18/57.2957795 , 0.0174532925/
SINPOL = SIN(ZPIR18*POLPHI)
COSPOL = COS(ZPIR18*POLPHI)
ZPHIS = ZPIR18*PHIS
ZLAMS = LAMS
IF(ZLAMS.GT.180.0) ZLAMS = ZLAMS - 360.0
ZLAMS = ZPIR18*ZLAMS
ARG = COSPOL*COS(ZPHIS)*COS(ZLAMS) + SINPOL*SIN(ZPHIS)
ABCTEST = ZRPI18*ASIN(ARG)
RETURN
END FUNCTION ABCTEST
不明確聲明事物並不一定是一個錯誤條件(閱讀關於_implicit declaration_),但至於爲什麼你的情況與模塊不起作用,我們需要看到一個例子。 – francescalus