2.2 Опции управления диалектом Fortran
Следующие опции управляют деталями диалекта Fortran, принимаемого компилятором:
-
-ffree-form -ffixed-form-
Укажите макет, используемый исходным файлом. Макет свободного формата был введен в Fortran 90. Фиксированный формат традиционно использовался в более старых программах Fortran. Если ни один из вариантов не указан, формат исходного кода определяется расширением файла.
-
-fall-intrinsics -
Эта опция заставляет принимать все встроенные процедуры (включая расширения, специфичные для GNU). Это может быть полезно при использовании -std= для обеспечения соответствия стандарту, но при этом получить доступ ко всему диапазону встроенных функций, доступных с помощью
gfortran. В результате, -Wintrinsics-std будет проигнорирован, и ни одна пользовательская процедура с тем же именем, что и любая встроенная функция, не будет вызвана, за исключением случаев, когда она явно объявленаEXTERNAL. -
-fallow-argument-mismatch -
Некоторые коды содержат вызовы внешних процедур с несоответствиями между вызовами и определением процедуры или с несоответствиями между различными вызовами. Такой код не соответствует стандарту и обычно будет отмечен ошибкой. Данная опция понижает ошибку до предупреждения, которое можно отключить только отключением всех предупреждений с помощью -w. Однократное появление ошибки на аргумент отмечается этим предупреждением. -fallow-argument-mismatch подразумевается при -std=legacy.
Использование этой опции настоятельно не рекомендуется. Можно предоставить код, соответствующий стандарту, который допускает различные типы аргументов, используя явный интерфейс и
TYPE(*). -
-fallow-invalid-boz -
Литерал BOZ может встречаться в ограниченном количестве контекстов в соответствии со стандартом Fortran. Эта опция понижает ошибку до предупреждения и позволяет литералу BOZ появляться там, где стандарт Fortran запрещает его использование.
-
-fd-lines-as-code -fd-lines-as-comments-
Включить специальную обработку строк, начинающихся с
dилиDв источниках с фиксированным форматом. Если опция -fd-lines-as-code задана, они обрабатываются так, как будто первая колонка содержит пробел. Если задана опция -fd-lines-as-comments, они обрабатываются как строки комментариев. -
-fdec -
Режим совместимости с DEC. Включает расширения и другие функции, которые имитируют поведение более старых компиляторов (таких как DEC). Эти функции нестандартны и следует избегать их использования. Подробности об реализации этих расширений в GNU Fortran см. в полной документации.
Другие флаги, включенные этим переключателем: -fdollar-ok -fcray-pointer -fdec-char-conversions -fdec-structure -fdec-intrinsic-ints -fdec-static -fdec-math -fdec-include -fdec-blank-format-item -fdec-format-defaults
Если -fd-lines-as-code/-fd-lines-as-comments не заданы, то -fdec также устанавливает -fd-lines-as-comments.
-
-fdec-char-conversions -
Включить использование символьных литералов в операциях присваивания и
DATAоператорах для переменных, не являющихся символами. -
-fdec-structure -
Включить DEC
STRUCTUREиRECORD, а такжеUNION,MAP, и точку (’.’) в качестве разделителя членов (в дополнение к ’%’). Это предоставляется только для совместимости; следует использовать производные типы Fortran 90, где это возможно. -
-fdec-intrinsic-ints -
Включить варианты вида B/I/J/K для существующих целочисленных функций (например, BIAND, IIAND, JIAND и т.д.). Полный список встроенных функций см. в полной документации.
-
-fdec-math -
Включить встроенные функции математики legacy, такие как COTAN и тригонометрические функции с градусами (например, TAND, ATAND и т.д.) для совместимости со старым кодом.
-
-fdec-static -
Включить атрибуты STATIC и AUTOMATIC в стиле DEC для явного указания хранения переменных и других объектов.
-
-fdec-include -
Включить разбор INCLUDE как оператора в дополнение к его разбору как строки INCLUDE. При разборе как оператора INCLUDE, INCLUDE не должен быть на одной строке и может использовать продолжение строк.
-
-fdec-format-defaults -
Включить использование спецификаторов формата F, G и I без спецификаторов ширины, вместо этого будут использоваться значения ширины по умолчанию.
-
-fdec-blank-format-item -
Включить пустой элемент формата в конце спецификации формата, т.е. ничего после последней запятой.
-
-fdollar-ok -
Разрешить ‘$’ как допустимый символ, не являющийся первым, в имени символа. Символы, начинающиеся с ‘$’, отклоняются, поскольку неясно, какие правила применять к неявной типизации, поскольку разные поставщики реализуют разные правила. Использование ‘$’ в операторах
IMPLICITтакже отклоняется. -
-fbackslash -
Изменить интерпретацию обратных слешей в строковых литералах с одиночного символа обратного слеша на символы escape в стиле C. Следующие комбинации расширяются
\a,\b,\f,\n,\r,\t,\v,\\, и\0соответственно до ASCII символов сигнал, возврат, подача формы, новая строка, возврат каретки, горизонтальная табуляция, вертикальная табуляция, обратный слэш и NUL соответственно. Кроме того,\xnn,\unnnn и\Unnnnnnnn (где каждый n является шестнадцатеричной цифрой) преобразуются в соответствующие Unicode-символы. Все остальные комбинации символа, предшествующего \ не расширяются. -
-fmodule-private -
Установить по умолчанию доступность модульных сущностей к
PRIVATE. Связанные по использованию сущности не будут доступны, если они не объявлены явно какPUBLIC. -
-ffixed-line-length-n -
Установить столбец, после которого символы игнорируются в типичных строках с фиксированным форматом в исходном файле, и, если
-fno-pad-source, пробелы предполагаются (как будто дополнены до этой длины) после окончания коротких строк с фиксированным форматом.Популярные значения для n включают 72 (стандарт и по умолчанию), 80 (изображение карточки) и 132 (соответствующее «расширенным» опциям в некоторых популярных компиляторах). n также может быть ‘none’, что означает, что вся строка имеет значение, и что продолженные символьные константы никогда не имеют неявных пробелов, добавленных к ним, чтобы заполнить строку. -ffixed-line-length-0 означает то же самое, что и -ffixed-line-length-none.
-
-fno-pad-source -
По умолчанию в строках с фиксированным форматом предполагаются пробелы (как будто дополненные до этой длины) после окончания коротких строк с фиксированным форматом. Это не делается ни при использовании -ffixed-line-length-0, -ffixed-line-length-none или опции -fno-pad-source. С любой из этих опций продолженные символьные константы никогда не имеют неявных пробелов, добавленных к ним, чтобы заполнить строку.
-
-ffree-line-length-n -
Установите столбец, после которого символы игнорируются в типичных строках с свободным форматом в исходном файле. Значение по умолчанию — 132. n может быть ‘none’, что означает, что вся строка имеет значение. -ffree-line-length-0 означает то же самое, что и -ffree-line-length-none.
-
-fmax-identifier-length=n -
Укажите максимальную длину идентификатора. Типичные значения — 31 (Fortran 95) и 63 (Fortran 2003 и более поздние версии).
-
-fimplicit-none -
Укажите, что неявная типизация не допускается, если не переопределена явными
IMPLICITоператорами. Это эквивалентно добавлениюimplicit noneв начало каждой процедуры. -
-fcray-pointer -
Включить расширение Cray pointer, которое предоставляет функциональность указателей в стиле C.
-
-fopenacc -
Включить расширения OpenACC. Это включает директивы OpenACC
!$accв свободном формате иc$acc,*$accи!$accдирективы в фиксированном формате,!$условные компиляции в свободном формате иc$,*$и!$условные компиляции в фиксированном формате, и при линковке обеспечивает привязку библиотеки времени выполнения OpenACC. -
-fopenmp -
Включить расширения OpenMP. Это включает директивы OpenMP
!$ompв свободном формате иc$omp,*$ompи!$ompдирективы в фиксированном формате,!$условные компиляции в свободном формате иc$,*$и!$условные компиляции в фиксированном формате, и при линковке обеспечивает привязку библиотеки времени выполнения OpenMP. Опция -fopenmp подразумевает -frecursive. -
-fno-range-check -
Отключить проверку диапазона на результаты упрощения константных выражений во время компиляции. Например, GNU Fortran выдаст ошибку во время компиляции при упрощении
a = 1. / 0. С этой опцией ошибка не будет выдана, иaполучит значение+Infinity. Если выражение вычисляет значение вне соответствующего диапазона [-HUGE():HUGE()], то выражение будет заменено на-Infили+Infсоответственно. Аналогично,DATA i/Z'FFFFFFFF'/приведет к целочисленному переполнению на большинстве систем, но с -fno-range-check значение будет «перематываться», иiбудет инициализировано значением -1 вместо этого. -
-fdefault-integer-8 -
Установить типы целых и логических по умолчанию на 8-байтовый тип. Эта опция также влияет на тип целых констант, таких как
42. В отличие от -finteger-4-integer-8, она не повышает переменные с явным объявлением типа. -
-fdefault-real-8
-
Установите тип вещественного числа по умолчанию на тип шириной 8 байт. Этот параметр также влияет на вид вещественных констант, не являющихся типа double, таких как
1.0. Этот параметр увеличивает ширину по умолчаниюDOUBLE PRECISIONи вещественных констант типа double, таких как1.d0, до 16 байт, если это возможно. Если-fdefault-double-8указан вместе сfdefault-real-8,DOUBLE PRECISIONи вещественные константы типа double не будут увеличены. В отличие от -freal-4-real-8,fdefault-real-8не увеличивает переменные с явными объявлениями типа. -
-fdefault-real-10 -
Установите тип вещественного числа по умолчанию на тип шириной 10 байт. Этот параметр также влияет на вид вещественных констант, не являющихся типа double, таких как
1.0. Этот параметр увеличивает ширину по умолчаниюDOUBLE PRECISIONи вещественных констант типа double, таких как1.d0, до 16 байт, если это возможно. Если-fdefault-double-8указан вместе сfdefault-real-10,DOUBLE PRECISIONи вещественные константы типа double не будут увеличены. В отличие от -freal-4-real-10,fdefault-real-10не увеличивает переменные с явными объявлениями типа. -
-fdefault-real-16 -
Установите тип вещественного числа по умолчанию на тип шириной 16 байт. Этот параметр также влияет на вид вещественных констант, не являющихся типа double, таких как
1.0. Этот параметр увеличивает ширину по умолчаниюDOUBLE PRECISIONи вещественных констант типа double, таких как1.d0, до 16 байт, если это возможно. Если-fdefault-double-8указан вместе сfdefault-real-16,DOUBLE PRECISIONи вещественные константы типа double не будут увеличены. В отличие от -freal-4-real-16,fdefault-real-16не увеличивает переменные с явными объявлениями типа. -
-fdefault-double-8 -
Установите тип
DOUBLE PRECISIONи вещественные константы типа double, такие как1.d0, на тип шириной 8 байт. Ничего не делает, если это уже значение по умолчанию. Этот параметр предотвращает -fdefault-real-8, -fdefault-real-10 и -fdefault-real-16 от увеличенияDOUBLE PRECISIONи вещественных констант типа double, таких как1.d0, до 16 байт. -
-finteger-4-integer-8 -
Увеличивает все
INTEGER(KIND=4)сущности доINTEGER(KIND=8)сущностей. ЕслиKIND=8недоступен, будет выдано сообщение об ошибке. Этот параметр следует использовать с осторожностью, и он может быть неподходящим для ваших кодов. Возможные проблемы включают вызовы внешних процедур, выравнивание вEQUIVALENCEи/илиCOMMON, общие интерфейсы, преобразование констант символьных литералов BOZ и Ввод/Вывод. Рекомендуется проверить промежуточное представление переведённого кода Fortran, полученного с помощью -fdump-tree-original. -
-freal-4-real-8 -freal-4-real-10-freal-4-real-16-freal-8-real-4-freal-8-real-10-freal-8-real-16-
Увеличивает все
REAL(KIND=M)сущности доREAL(KIND=N)сущностей. ЕслиREAL(KIND=N)недоступен, будет выдано сообщение об ошибке. Параметры-freal-4-также влияют на тип вещественного числа по умолчанию, а параметры-freal-8-также на тип вещественного числа двойной точности. Все остальные типы вещественных чисел не затрагиваются этим параметром. Увеличение также применяется к вещественным константам-литералам по умолчанию и двойной точности, и к определённому числу типа 4 или 8, соответственно. Однако-fdefault-real-8,-fdefault-real-10,-fdefault-real-10, и-fdefault-double-8имеют приоритет для типов вещественных чисел по умолчанию и двойной точности, как для вещественных констант-литералов, так и для объявлений без номера типа. Обратите внимание, что дляREAL(KIND=KIND(1.0))литерал может быть увеличен, а затем результат может быть увеличен повторно. Эти параметры следует использовать с осторожностью, и они могут быть неподходящими для ваших кодов. Возможные проблемы включают вызовы внешних процедур, выравнивание вEQUIVALENCEи/илиCOMMON, общие интерфейсы, преобразование констант символьных литералов BOZ, Ввод/Вывод, и вызовы встроенных процедур при передаче значения вkind=аргумент-заглушку. Рекомендуется проверить промежуточное представление переведённого кода Fortran, полученного с помощью -fdump-fortran-original или -fdump-tree-original. -
-std=std -
Укажите стандарт, которому программа должна соответствовать, который может быть одним из ‘f95’, ‘f2003’, ‘f2008’, ‘f2018’, ‘gnu’ или ‘legacy’. Значение по умолчанию для std — ‘gnu’, которое определяет супермножество последнего стандарта Fortran, включающего все расширения, поддерживаемые GNU Fortran, хотя будут выдаваться предупреждения об устаревших расширениях, не рекомендуемых для использования в новом коде. Значение ‘legacy’ эквивалентно, но без предупреждений об устаревших расширениях, и может быть полезно для старых нестандартных программ. Значения ‘f95’, ‘f2003’, ‘f2008’ и ‘f2018’ указывают на строгое соответствие стандартам Fortran 95, Fortran 2003, Fortran 2008 и Fortran 2018 соответственно; ошибки выдаются для всех расширений, выходящих за рамки соответствующего стандарта языка, и предупреждения выдаются для функций Fortran 77, которые разрешены, но устарели в более поздних стандартах. Устаревший параметр ‘-std=f2008ts’ действует как псевдоним для ‘-std=f2018’. Он присутствует только для обратной совместимости с более ранними версиями gfortran и больше не должен использоваться.
-
-ftest-forall-temp -
Улучшить покрытие тестов, заставив большинство назначений forall использовать временные переменные.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-13.3.0/gfortran/Fortran-Dialect-Options.html