2010-03-01 94 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对转换后的代码进行回归测试。