1.3 Предварительная обработка и условные компиляции
Многие компиляторы Fortran, включая GNU Fortran, позволяют передавать исходный код через препроцессор C (CPP; иногда также называемый препроцессором Fortran, FPP), чтобы разрешить условную компиляцию. В случае GNU Fortran это GNU C Preprocessor в традиционном режиме. В системах с сохранением регистра в именах файлов препроцессор автоматически вызывается, если расширение файла — .F, .FOR, .FTN, .fpp, .FPP, .F90, .F95, .F03 или .F08. Для ручного вызова препроцессора для любого файла используйте -cpp, чтобы отключить предварительную обработку файлов, где препроцессор запускается автоматически, используйте -nocpp.
Если обработанный файл включает другой файл с оператором Fortran INCLUDE, включённый файл не обрабатывается предварительно. Чтобы выполнить предварительную обработку включённых файлов, используйте эквивалентный оператор препроцессора #include.
Если GNU Fortran вызывает препроцессор, __GFORTRAN__ определён. Макросы __GNUC__, __GNUC_MINOR__ и __GNUC_PATCHLEVEL__ могут быть использованы для определения версии компилятора. Подробнее см. Обзор в разделе «The C Preprocessor».
GNU Fortran поддерживает ряд INTEGER и REAL типов данных, помимо типов данных, требуемых стандартом Fortran. Доступность любого заданного типа данных зависит от архитектуры. Для условного включения кода для этих дополнительных типов данных можно использовать следующие предопределённые макросы препроцессора: __GFC_INT_1__, __GFC_INT_2__, __GFC_INT_8__, __GFC_INT_16__, __GFC_REAL_10__, и __GFC_REAL_16__.
Хотя CPP является фактическим стандартом для предварительной обработки кода Fortran, часть 3 стандарта Fortran 95 (ISO/IEC 1539-3:1998) определяет условную компиляцию, которая не широко используется и не поддерживается непосредственно компилятором GNU Fortran. Вы можете использовать программу coco для предварительной обработки таких файлов (http://www.daniellnagle.com/coco.html).
Далее: GNU Fortran и G77, Предыдущее: GNU Fortran и GCC, Наверх: Введение [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gfortran/Preprocessing-and-conditional-compilation.html