预处理!在gfortran中的DEC $指令

时间:2010-03-01 17:08:38

标签: fortran preprocessor gfortran intel-fortran

我有一个最初针对英特尔编译器的大型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进行编译之前调用外部预处理器,但这对我来说似乎不是一个很好的解决方案。

有什么想法?非常感谢大师!

1 个答案:

答案 0 :(得分:2)

Intel ifort了解C风格的预处理程序指令,因此将文件转换为该样式可能最简单。那么你将拥有一个可以与两个编译器一起使用的代码库。将使用ifort对转换后的代码进行回归测试。