Предварительная обработка! Директивы DEC $ в gfortran - PullRequest
4 голосов
/ 01 марта 2010

У меня есть большая кодовая база Fortran, которая первоначально предназначалась для компилятора Intel. Сейчас я готовлюсь к компиляции с Gfortran. К сожалению, код изобилует директивами предварительной обработки в стиле Intel, такими как:

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

Из того, что я могу сказать с помощью googling и gfortran docs, нет никакой внутренней поддержки gfortran для чего-либо кроме предварительной обработки в стиле C, например:

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

Кто-нибудь еще сталкивался с этой проблемой и придумал элегантное решение? Очевидно, я мог бы написать сценарий оболочки, который вызывает внешний препроцессор перед передачей кода в gfortran для компиляции, но это просто не кажется мне потрясающим решением.

Есть мысли? Спасибо ТАК Гуру!

1 Ответ

2 голосов
/ 02 марта 2010

Intel ifort понимает директивы препроцессора в стиле C, поэтому может быть проще всего конвертировать ваши файлы в этот стиль. Тогда у вас будет единая база кода, которая будет работать с обоими компиляторами. Произойдет регрессионное тестирование преобразованного кода с помощью ifort.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...