我想通過使用gfortran從源代碼構建它來獲得傳統的FORTRAN代碼。我終於能夠成功地構建它,但是現在我在運行時遇到了出界錯誤。我使用gdb並將錯誤追蹤到使用loc()內部函數。當我嘗試打印loc(ae)
的值時,ae正在傳遞給我的整數值,在當前上下文中出現錯誤「無符號」loc。「我試着編譯ifort 11.x並用DDT調試,並得到相同的錯誤。對我而言,這意味着編譯器不知道內在的東西。如何處理不屬於標準的FORTRAN內部函數?
有一點讀物顯示loc本身不是F77標準的一部分,所以也許這是問題的一部分。我發佈了以下內在的定義,但我不知道如何將其實現到我的代碼中,因此可以使用loc()。
任何意見或我誤解我的問題?由於gfortran和ifort由於出界錯誤而在同一地點崩潰,但使用loc()的函數在兩個編譯器之間返回相同的大數字。這似乎有點奇怪,如果兩個編譯器爲loc返回相同的值,那麼loc()將不起作用。
用法:
iaddr = LOC(OBJ)
其中:
OBJ 是一個變量,數組,函數或子程序,其地址被通緝。 iaddr 是一個地址爲「obj」的整數。該地址與LARn 指令存儲的格式相同,格式爲 。
說明:
LOC來獲得的 東西的地址。在Fortran中返回的值不是 確實有用,但GMAP子例程可能需要 ,或者可能需要 非常特殊的調試。
感謝您的迴應。進一步的調查顯示我祿可能不是問題。我有用Compaq VF 6構建的代碼的2個版本。1,忽略'數組超出界限'的錯誤,並因此停止運行。我使項目設置完全一樣,但行爲仍在繼續。我無法弄清楚這一點,可能只需移動到Windows並使用正在運行的預先存在的可執行文件即可。再次感謝。 – Bob 2011-05-04 16:22:59