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-символы 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 и более поздние версии).
-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 байт. Этот параметр также влияет на вид не-двойных вещественных констант, таких как
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)недоступен, будет выдано сообщение об ошибке. Флаги-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-12.1.0/gfortran/Fortran-Dialect-Options.html