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-
Включить встроенные функции legacy math, такие как 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-
Изменить интерпретацию обратных слешей в строковых литералах с одиночного символа обратного слеша на «C-стиль» управляющие символы. Следующие комбинации расширяются
\a,\b,\f,\n,\r,\t,\v,\\, и\0до ASCII-символов alert, backspace, form feed, newline, carriage return, horizontal tab, vertical tab, обратный слэш и 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 байт. Этот параметр также влияет на тип вещественных констант, не являющихся 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 байт. Этот параметр также влияет на тип недвойных вещественных констант, таких как
1.0. Этот параметр повышает ширину по умолчаниюDOUBLE PRECISIONи двойных вещественных констант, таких как1.d0, до 16 байт, если это возможно. Если-fdefault-double-8задан вместе сfdefault-real-10,DOUBLE PRECISIONи двойные вещественные константы не будут повышены. В отличие от -freal-4-real-10,fdefault-real-10не повышает переменные с явными объявлениями типа. -fdefault-real-16-
Установите тип вещественного значения по умолчанию на тип шириной 16 байт. Этот параметр также влияет на тип недвойных вещественных констант, таких как
1.0. Этот параметр повышает ширину по умолчаниюDOUBLE PRECISIONи двойных вещественных констант, таких как1.d0, до 16 байт, если это возможно. Если-fdefault-double-8задан вместе сfdefault-real-16,DOUBLE PRECISIONи двойные вещественные константы не будут повышены. В отличие от -freal-4-real-16,fdefault-real-16не повышает переменные с явными объявлениями типа. -fdefault-double-8-
Установите тип
DOUBLE PRECISIONи двойных вещественных констант, таких как1.d0, на тип шириной 8 байт. Ничего не делает, если это уже значение по умолчанию. Этот параметр предотвращает -fdefault-real-8, -fdefault-real-10 и -fdefault-real-16 от повышенияDOUBLE PRECISIONи двойных вещественных констант, таких как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)недоступно, будет выдано сообщение об ошибке. Все остальные типы вещественных значений не затрагиваются этим параметром. Эти параметры следует использовать с осторожностью, и они могут быть неподходящими для ваших кодов. Возможные области беспокойства включают вызовы внешних процедур, выравнивание вEQUIVALENCEи/илиCOMMON, общие интерфейсы, преобразование констант литералов BOZ и ввод/вывод. Рекомендуется проверить промежуточное представление переведенного кода Fortran, созданного с помощью -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-10.2.0/gfortran/Fortran-Dialect-Options.html