2010-03-01 231 views
4

我有一個最初針對英特爾編譯器的大型Fortran代碼庫。我現在正準備和gfortran一起編譯。不幸的是,代碼充滿了英特爾式的預處理指令,如:

!DEC$ IF DEFINED (MYDIRECTIVE) 
    REAL, DIMENSION(:,:,:), ALLOCATABLE :: my_real_var 
!DEC$ ENDIF 

從我可以通過谷歌搜索和gfortran文檔告訴,有任何東西,除了C風格的前處理內部沒有gfortran支持,如:

#if defined MYDIRECTIVE 
    REAL, DIMENSION(:,:,:), ALLOCATABLE :: my_real_var 
#endif 

有沒有其他人遇到過這個問題,想出一個優雅的解決方案?顯然,我可以編寫一個shell腳本,在將代碼傳遞給gfortran進行編譯之前調用外部預處理器,但這對我來說似乎不是一個好的解決方案。

有什麼想法?感謝所以大師!

回答

2

Intel ifort瞭解C風格的預處理器指令,因此將文件轉換爲該風格可能最爲容易。那麼你將有一個單一的代碼庫,可以與兩個編譯器一起工作。將會有一些工作用ifort對轉換後的代碼進行迴歸測試。