Существуют ли директивы препроцессора в фортране, подобные тем, что в C?

Мне интересно, есть ли в фортране директивы препроцессора, похожие на #ifdef ... #endif C?


person JRR    schedule 21.07.2014    source источник
comment
Да, но не стандартный. Тем не менее, вполне пригодный для использования. В gfortran препроцессор работает только в традиционном режиме, возможности ограничены по сравнению с C99 или C++.   -  person Vladimir F    schedule 22.07.2014


Ответы (1)


Да это так. На самом деле они обычно одинаковы. Для gfortran вы можете включить препроцессор с помощью опции -cpp, для ifort вы можете использовать -fpp.

Кроме того, существует соглашение, что заглавная F в *.F и *.F90 включает препроцессор, а *.f и *.f90 — нет.

person Alexander Vogt    schedule 21.07.2014
comment
... хотя технически препроцессор C не используется в Fortran. - person IanH; 22.07.2014
comment
Другой вариант — вызвать препроцессор c непосредственно перед компиляцией вашего кода на Fortran. Например. cpp -P -traditional -DWHATEVER code.F90 > code.f90 ; gfortran -c code.f90 - person casey; 22.07.2014
comment
Соглашение для .F и .F90 не применяется к Windows. - person Steve Lionel; 22.07.2014
comment
@SteveLionel В этом есть смысл ;-) Спасибо! [Я не использую Windows...] - person Alexander Vogt; 22.07.2014
comment
Просто чтобы закрыть мой комментарий - Windows сохраняет регистр, но не учитывает регистр имен файлов, поэтому .f и .F обрабатываются одинаково. - person Steve Lionel; 24.07.2014