Preprocessor 什么';是什么宏将ifort与其他fortran编译器区分开来? 我正在使用FORTRAN代码,它必须与各种FORTRAN编译器一起工作(并且与C++和java代码交互)。目前,我们使用gfortran和g95,但我正在研究如何使用ifort,我遇到的第一个问题是如何在源代码中确定它是否使用ifort
例如,我现在有一段代码:Preprocessor 什么';是什么宏将ifort与其他fortran编译器区分开来? 我正在使用FORTRAN代码,它必须与各种FORTRAN编译器一起工作(并且与C++和java代码交互)。目前,我们使用gfortran和g95,但我正在研究如何使用ifort,我遇到的第一个问题是如何在源代码中确定它是否使用ifort,preprocessor,fortran,intel,Preprocessor,Fortran,Intel,例如,我现在有一段代码: #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. Currentl
#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
和谷歌阅读手册页。你要的是\uu英特尔编译器
,正如中所定义的,根据他们的文档,他们定义了英特尔编译器=910。910可能是一个版本号,但您可能只需要在其上添加ifdef即可
我应该注意的是,除非您使用/fpp标志明确地将其打开,否则ifort不允许使用宏。谢谢!我还必须在CMAKLISTS.TXT文件中添加到CMACHYCI标志和CMACHOWSWIGHFLAGS变量,以便C++代码创建正确的绑定。是的,它是版本ID。对于iFRT版本11.1,值是1110。你也可以通过使用文件类型“F90”——大写)来获得宏/预处理。你说的“文件类型”是指文件的扩展名,还是指编译器标志?我知道我已经晚了,但我只是想发布一个关于样式的简要说明:
#if defined
子句中的默认情况应该是一个错误,以防止任何意外行为。因此,如果定义了(uu GFORTRAN)…,请尝试使用类似于#elif已定义(uuu英特尔编译器)#否则#错误“未为编译器设置名称损坏宏。”