【发布时间】:2011-01-31 22:45:39
【问题描述】:
我正在使用必须与各种 Fortran 编译器一起使用的 Fortran 代码(并且正在与 C++ 和 Java 代码交互)。目前,我们让它与 gfortran 和 g95 一起使用,但我正在研究如何让它与 ifort 一起使用,我遇到的第一个问题是弄清楚如何在源代码中确定它是否使用 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 "Name-mangling macro not set for your compiler."
标签: preprocessor fortran intel