良好實踐表明,用Fortran子程序參數應該各自具有指定的意圖(即intent(in)
,intent(out)
或intent(inout)
如所描述this question):的Fortran意圖(INOUT)與省略意圖
subroutine bar (a, b)
real, intent(in) :: a
real, intent(inout) :: b
b = b + a
...
然而,不是指定的意圖有效的Fortran:
subroutine bar (a, b)
real, intent(in) :: a
real :: b
b = b + a
...
是否有超越編譯時間任何真正的差異檢查指定爲intent(inout)
參數和參數沒有在規定帳篷?有什麼我應該擔心的是,如果我正在改造意圖更老,免費,代碼?
我已經構建四項測試中試圖修改子程序的參數。有外部子程序的兩個測試 - 即在一個文件中 - 有或沒有意圖(inout)。編譯器不會抱怨任何這些。這不是一個驚喜(沒有界面)和由此產生的EXE段錯誤。我已經卡住的子程序的模塊中的最後兩個測試,看看在針對無意圖殼體和一個編譯器錯誤的段錯誤(「實際參數(1)必須是可定義爲僞參數‘B’是INTENT = OUT/INOUT「)與接口。這是來自debian系統的gfortran 4.4.4-2。 – 2010-05-21 09:22:15
非常好,我們都學到了一些東西。 – 2010-05-21 09:47:36
這些天參數被放置在內存的只讀標記部分,但這並非總是如此。在很老的編譯器一個著名的例子是重新定義數字常量的http://coding.derkeiler.com/Archive/Fortran/comp.lang.fortran/2005-01/0485.html – 2012-02-29 08:19:56