1
許多Fortran編譯器提供AUTOMATIC
和STATIC
語句和屬性來明確定義何時應該在子例程的調用之間共享一個變量,以及每次調用子例程時它們應該分配給堆棧。ISO Fortran等效於AUTOMATIC和STATIC
在ISO Fortran標準(其中任何一個)中是否存在等價物?
許多Fortran編譯器提供AUTOMATIC
和STATIC
語句和屬性來明確定義何時應該在子例程的調用之間共享一個變量,以及每次調用子例程時它們應該分配給堆棧。ISO Fortran等效於AUTOMATIC和STATIC
在ISO Fortran標準(其中任何一個)中是否存在等價物?
自FORTRAN 77以來,Fortran具有SAVE
語句(以及自Fortran 90以來的SAVE
屬性)以在調用之間共享變量。通過聲明程序recursive
(Fortran 90)可以強制自動變量。
+1 - 只是爲了OP的好處而添加,這是一個非常Fortran-y的方法。即使提到堆棧的存在對於Fortran來說也是依賴於實現的(對於已經使用了60年的語言來說,這是一種必要的方法),所以你永遠不會看到指定堆vs堆的語言特性。另一方面,限制你想要完成的事情 - 一個變量應該被保存,或者一個例程應該被允許自己調用 - 適合Fortran。它是Fortran和更多裸機C語言之間最細微的概念差異之一。 – 2014-08-27 11:26:44
感謝您的概念性解釋。我所擁有的是爲英特爾編譯器編寫的一些Fortran代碼,我正試圖使用它來構建GFortran。幾個子程序有大型數組作爲當地人,可能會超過他們自動保存的大小,所以有人宣佈他們爲「AUTOMATIC」。在這裏,我最好的辦法就是聲明這些子程序「RECURSIVE」嗎? – Tom 2014-08-27 23:45:25