2016-05-13 4 views
5

Предположим, у меня есть два модуля Fortran, называемые modA и modB. Есть ли способ использовать ту или иную программу в зависимости от условного оператора? Требуется ли это какой-то тип предварительной обработки? Например, я хочу, чтобы иметь возможность сделать что-то вроде следующего кода:Fortran: Есть ли способ условно использовать модули?

if (condition) 
    use modA 
else 
    use modB 
end 

Я использую компилятор GNU Fortran.

ответ

6

Да, вы должны выполнить некоторую предварительную обработку. Наиболее распространенным является препроцессор C, включенный в GNU Fortran.

#if (condition) 
    use modA 
#else 
    use modB 
#endif 

Препроцессор не понимает ваш код Fortran, это только текст для него. Он имеет собственный набор директив и собственный набор переменных. В состоянии могут использоваться только препроцессорные переменные, а не переменные Fortran.

Другая общая директива - #ifdef, которая является вариантом #if defined. См. Руководство для более https://gcc.gnu.org/onlinedocs/cpp/Traditional-Mode.html (gfortran запускает препроцессор в традиционном режиме).

Чтобы включить препроцессор, используйте флаг -cpp или в Unix вы можете использовать капитал F в суффиксе файла.