2.2 Параметры управления диалектом Fortran
Следующие параметры управляют деталями диалекта Fortran, принимаемого компилятором:
-ffree-form-ffixed-form-
Укажите макет, используемый исходным файлом. Макет свободного формата был введён в Fortran 90. Макет фиксированного формата традиционно использовался в старых программах Fortran. Если ни один из вариантов не указан, форма исходного файла определяется расширением файла.
-fall-intrinsics-
Этот параметр заставляет принимать все встроенные процедуры (включая специфичные для GNU расширения). Это может быть полезно с -std=f95 для принудительного соблюдения стандарта, но получения доступа ко всему набору встроенных процедур, доступных с
gfortran. Вследствие этого -Wintrinsics-std будет проигнорирован, и ни одна пользовательская процедура с тем же именем, что и любая встроенная, не будет вызвана, кроме случаев, когда она явно объявленаEXTERNAL. -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-structure -fdec-intrinsic-ints -fdec-static -fdec-math
Если -fd-lines-as-code/-fd-lines-as-comments не установлены, то -fdec также устанавливает -fd-lines-as-comments.
-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 для явного указания хранения переменных и других объектов.
-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-
Установить столбец, после которого символы игнорируются в типичных строках фиксированного формата в исходном файле, и через который пробелы предполагаются (как если бы они были дополнены до этой длины) после окончания коротких строк фиксированного формата.
Популярные значения для n включают 72 (стандарт и по умолчанию), 80 (изображение карты) и 132 (соответствующее «расширенным» вариантам в некоторых популярных компиляторах). n также может быть ‘none’, означая, что вся строка имеет смысл и что продолженные символьные константы никогда не имеют неявных пробелов, добавленных к ним для заполнения строки. -ffixed-line-length-0 означает то же самое, что -ffixed-line-length-none.
-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.Обратите внимание, что это экспериментальная функция, неполная и может измениться в будущих версиях GCC. Подробнее см. https://gcc.gnu.org/wiki/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до 16 байтов, если это возможно, если не задан также-fdefault-double-8. В отличие от -freal-4-real-8, он не повышает переменные с явным объявлением типа. -fdefault-real-10-
Установить тип вещественного числа по умолчанию на тип с шириной 10 байтов. Этот параметр также влияет на вид вещественных констант, отличных от double, таких как
1.0, и повышает по умолчанию ширинуDOUBLE PRECISIONдо 16 байтов, если это возможно, если не задан также-fdefault-double-8. В отличие от -freal-4-real-10, он не повышает переменные с явным объявлением типа. -fdefault-real-16-
Установить тип вещественного числа по умолчанию на тип с шириной 16 байтов. Этот параметр также влияет на вид вещественных констант, отличных от double, таких как
1.0, и повышает по умолчанию ширинуDOUBLE PRECISIONдо 16 байтов, если это возможно, если не задан также-fdefault-double-8. В отличие от -freal-4-real-16, он не повышает переменные с явным объявлением типа. -fdefault-double-8-
Установить тип
DOUBLE PRECISIONна тип с шириной 8 байтов. Не делать ничего, если это уже значение по умолчанию. Если задан -fdefault-real-8,DOUBLE PRECISIONбудет вместо этого повышен до 16 байтов, если это возможно, и -fdefault-double-8 может быть использован для предотвращения этого. Тип вещественных констант, таких как1.d0, не будет изменён параметром -fdefault-real-8, поэтому также -fdefault-double-8 не влияет на него. -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’ позволяет использовать стандарт Fortran 2008, включая дополнения Технического Спецификация (TS) 29113 о дальнейшей совместимости Fortran с C и TS 18508 о дополнительных параллельных функциях в Fortran.
-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-8.4.0/gfortran/Fortran-Dialect-Options.html