2010-03-01 6 views
4

원래 인텔의 컴파일러를 대상으로 한 대형 Fortran 코드베이스가 있습니다. 나는 지금 gfortran과 컴파일을 준비하고있다. 불행하게도, 코드가 같은 인텔 스타일의 전처리 지침에 산재 해있다 : 나는 인터넷 검색을하고 gfortran 문서를 통해 무엇을 말할 수에서

!DEC$ IF DEFINED (MYDIRECTIVE) 
    REAL, DIMENSION(:,:,:), ALLOCATABLE :: my_real_var 
!DEC$ ENDIF 

, C 스타일의 사전 처리 외에 아무것도에 대한 내부 gfortran 지원하지 않습니다 예 :

#if defined MYDIRECTIVE 
    REAL, DIMENSION(:,:,:), ALLOCATABLE :: my_real_var 
#endif 

누구나이 문제가 발생하여 우아한 해결책이 있습니까? 분명히 컴파일을 위해 gfortran에 코드를 전달하기 전에 외부 프리 프로세서를 호출하는 쉘 스크립트를 작성할 수는 있지만 이것은 나에게 훌륭한 솔루션처럼 보이지 않습니다.

의견이 있으십니까? 고마워요.

답변

2

인텔 ifort는 C 스타일의 전처리 지시문을 이해하므로 파일을 해당 스타일로 변환하는 것이 가장 쉽습니다. 그런 다음 두 컴파일러 모두에서 작동 할 수있는 단일 코드 기반을 갖게됩니다. ifort를 사용하여 변환 된 코드를 테스트하는 작업 회귀가있을 수 있습니다.