2.2 Опции управления диалектом Fortran
Следующие опции управляют деталями диалекта Fortran, принимаемого компилятором:
-ffree-form-ffixed-form-
Укажите макет, используемый исходным файлом. Макет свободной формы был введён в Fortran 90. Макет фиксированной формы традиционно использовался в старых программах Fortran. Если ни один из вариантов не указан, формат исходного файла определяется расширением файла.
-fall-intrinsics-
Этот параметр позволяет принимать все встроенные процедуры (включая расширения, специфичные для GNU). Это может быть полезно при использовании -std=f95 для принудительного соблюдения стандарта, но доступа к полному набору встроенных процедур, доступных с
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-
Включить старые математические встроенные функции, такие как COTAN и тригонометрические функции со значениями в градусах (например, TAND, ATAND и т. д...) для совместимости со старым кодом.
-fdec-static-
Включить атрибуты DEC-стиля STATIC и AUTOMATIC для явного указания хранения переменных и других объектов.
-fdec-include-
Включить обработку INCLUDE как оператора в дополнение к обработке его как строки INCLUDE. При обработке как оператора INCLUDE, INCLUDE не обязательно должен быть на одной строке и может использовать продолжения строк.
-fdec-format-defaults-
Включить использование спецификаторов формата F, G и I без спецификаторов ширины, вместо этого будут использоваться значения по умолчанию.
-fdec-blank-format-item-
Включить пустой элемент формата в конце спецификации формата, т. е. ничего после последней запятой.
-fdollar-ok-
Разрешить ‘$’ как допустимый символ, не являющийся первым, в имени символа. Символы, начинающиеся с ‘$’, отклоняются, так как неясно, какие правила применять к неявной типизации, поскольку разные поставщики реализуют разные правила. Использование ‘$’ в операторах
IMPLICITтакже отклоняется. -fbackslash-
Изменить интерпретацию обратных слешей в строковых литералах с одного обратного слеша на “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 и Fortran 2008).
-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 байт. Этот параметр также влияет на вид вещественных констант, не являющихся двойными, таких как
1.0. Этот параметр повышает по умолчанию ширинуDOUBLE PRECISIONи двойных вещественных констант, таких как1.d0, до 16 байт, если это возможно. Если-fdefault-double-8задан вместе сfdefault-real-8,DOUBLE PRECISIONи двойные вещественные константы не повышаются. В отличие от -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 использовать временные переменные.
Далее: Параметры предварительной обработки, Предыдущее: Резюме параметров, Вверх: Вызов GNU Fortran [Содержание][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gfortran/Fortran-Dialect-Options.html