我正在使用Fortran代碼,它必須與各種Fortran編譯器一起工作(並且與C++和Java代碼進行交互)。目前,我們使用gfortran和g95,但我正在研究如何使用ifort來處理它,而我遇到的第一個問題是如何確定在源代碼中是使用ifort還是使用ifort不。從其他fortran編譯器中區分ifort的宏是什麼?
例如,我現在有這段代碼:
#if defined(__GFORTRAN__)
// Macro to add name-mangling bits to fortran symbols. Currently for gfortran only
#define MODFUNCNAME(mod,fname) __ ## mod ## _MOD_ ## fname
#else
// Macro to add name-mangling bits to fortran symbols. Currently for g95 only
#define MODFUNCNAME(mod,fname) mod ## _MP_ ## fname
#endif // if __GFORTRAN__
什麼是對ifort宏?我試過IFORT,但那是不正確的,而且進一步猜測似乎並不富有成效。我也嘗試閱讀手冊頁,使用ifort -help
和Google。
我知道我對這個問題已經很晚了,但我只是想提一下關於樣式的快速註釋:'#if defined'子句中的默認情況應該是一個錯誤,以防止出現意外行爲。所以儘量使用'#if defined(__ GFORTRAN__)... #elif defined(__ INTEL_COMPILER)... #else ... #error「編譯器沒有設置名稱宏。」# – Chris 2012-02-19 15:10:24
@Chris:very好點 – 2012-02-19 21:33:50