Spec-Zone.ru › GNU Fortran 6

2.4 Способы запроса или подавления ошибок и предупреждений

Ошибки — это диагностические сообщения, указывающие, что компилятор GNU Fortran не может скомпилировать соответствующий фрагмент исходного кода. Компилятор продолжит обработку программы в попытке сообщить о дополнительных ошибках для помощи в отладке, но не создаст никакого скомпилированного вывода.

Предупреждения — это диагностические сообщения, которые сообщают о конструкциях, которые не являются ошибочными, но которые представляют собой риск или предполагают, что в программе, вероятно, есть ошибка. Если не указан параметр -Werror, они не препятствуют компиляции программы.

Вы можете запросить многие конкретные предупреждения с параметрами, начинающимися с -W, например, -Wimplicit для запроса предупреждений о неявных объявлениях. Каждый из этих конкретных параметров предупреждений также имеет отрицательную форму, начинающуюся с -Wno-, чтобы отключить предупреждения; например, -Wno-implicit. В этом руководстве перечислен только один из двух форм, которая не является по умолчанию.

Эти параметры управляют количеством и типами ошибок и предупреждений, генерируемых GNU Fortran:

-fmax-errors=n

Ограничивает максимальное количество сообщений об ошибках до n, после чего GNU Fortran прекращает выполнение, вместо того чтобы пытаться продолжить обработку исходного кода. Если n равно 0, ограничений на количество сообщений об ошибках нет.

-fsyntax-only

Проверяет код на синтаксические ошибки, но не выполняет фактической компиляции. Это сгенерирует файлы модулей для каждого модуля, присутствующего в коде, но никаких других выходных файлов.

-pedantic

Выдает предупреждения о использовании расширений языка Fortran 95. -pedantic также применяется к конструкциям языка C, где они встречаются в исходных файлах GNU Fortran, например, при использовании ‘\e’ в символьной константе внутри директивы, такой как #include.

Корректные программы Fortran 95 должны компилироваться с этой опцией или без неё. Однако без этой опции также поддерживаются некоторые расширения GNU и традиционные возможности Fortran. С этой опцией многие из них отклоняются.

Некоторые пользователи пытаются использовать -pedantic для проверки программ на соответствие стандарту. Вскоре они обнаруживают, что это не совсем то, что они ожидали — она находит некоторые нестандартные практики, но не все. Тем не менее, улучшения GNU Fortran в этой области приветствуются.

Это следует использовать совместно с -std=f95, -std=f2003 или -std=f2008.

-pedantic-errors

Подобно -pedantic, за исключением того, что генерируются ошибки, а не предупреждения.

-Wall

Включает распространённые параметры предупреждений, касающиеся использования, которых, по нашему мнению, следует избегать, и которые, как мы считаем, легко избежать. В настоящее время это включает -Waliasing, -Wampersand, -Wconversion, -Wsurprising, -Wc-binding-type, -Wintrinsics-std, -Wtabs, -Wintrinsic-shadow, -Wline-truncation, -Wtarget-lifetime, -Winteger-division, -Wreal-q-constant и -Wunused.

-Waliasing

Предупреждает о возможной алиасирования фактических аргументов. В частности, он предупреждает, если один и тот же фактический аргумент ассоциирован с формальным аргументом с INTENT(IN) и формальным аргументом с INTENT(OUT) в вызове с явным интерфейсом.

Следующий пример вызовет предупреждение.

interface
  subroutine bar(a,b)
    integer, intent(in) :: a
    integer, intent(out) :: b
  end subroutine
end interface
integer :: a

call bar(a,a)
-Wampersand

Предупреждает о пропущенном амперсанде в продолжении символьных констант. Предупреждение выдаётся с -Wampersand, -pedantic, -std=f95, -std=f2003 и -std=f2008. Примечание: без амперсанда в продолжении символьной константы GNU Fortran предполагает продолжение на первом символе после амперсанда, который инициировал продолжение, отличном от комментариев и пробелов.

-Warray-temporaries

Предупреждает о временных массивах, сгенерированных компилятором. Информация, сгенерированная этим предупреждением, иногда полезна при оптимизации, чтобы избежать таких временных массивов.

-Wc-binding-type

Предупреждает, если переменная, возможно, не является C-совместимой. В частности, предупреждает, если переменная была объявлена с использованием внутреннего типа с типом по умолчанию вместо использования параметра вида, определённого для C-совместимости во внутреннем модуле ISO_C_Binding. Этот параметр подразумевается -Wall.

-Wcharacter-truncation

Предупреждает, когда присваивание символьной переменной приводит к обрезанию присвоенной строки.

-Wline-truncation

Предупреждает, когда строка исходного кода будет обрезана. Этот параметр подразумевается -Wall. Для исходного кода в свободном формате по умолчанию используется -Werror=line-truncation, так что обрезки сообщаются как ошибка.

-Wconversion

Предупреждает об неявных преобразованиях, которые, вероятно, изменят значение выражения после преобразования. Подразумевается -Wall.

-Wconversion-extra

Предупреждает об неявных преобразованиях между различными типами и видами. Этот параметр не подразумевает -Wconversion.

-Wextra

Включает некоторые параметры предупреждений для использования функций языка, которые могут быть проблематичными. В настоящее время это включает -Wcompare-reals и -Wunused-parameter.

-Wimplicit-interface

Предупреждает, если процедура вызывается без явного интерфейса. Обратите внимание, что это только проверяет наличие явного интерфейса. Это не проверяет, что объявленные интерфейсы согласованы во всех программных модулях.

-Wimplicit-procedure

Предупреждает, если процедура вызывается без явного интерфейса и не была объявлена как EXTERNAL.

-Winteger-division

Предупреждает, если целочисленное деление констант приводит к усечению результата. Например, 3/5 вычисляется как 0.

-Wintrinsics-std

Предупреждает, если gfortran обнаруживает процедуру с именем, похожим на внутреннюю функцию, которая не доступна в текущем выбранном стандарте (-std) и обрабатывает её как EXTERNAL процедуру из-за этого. -fall-intrinsics может быть использован для того, чтобы никогда не вызывать это поведение и всегда связывать с внутренней функцией независимо от выбранного стандарта.

-Wreal-q-constant

Выдаёт предупреждение, если вещественная константа содержит q экспоненциальную букву.

-Wsurprising

Выдаёт предупреждение при обнаружении «подозрительных» конструкций кода. Хотя они технически законны, они обычно указывают на допущенную ошибку.

В настоящее время это выдаёт предупреждение в следующих случаях:

  • В конструкции SELECT для целых чисел у CASE нет совпадения, так как его нижнее значение больше верхнего значения.
  • В логической конструкции SELECT есть три оператора CASE.
  • В TRANSFER источник короче, чем назначение.
  • Тип результата функции объявлен более одного раза с тем же типом. Если -pedantic или режим соответствия стандарту включён, это ошибка.
  • Переменная CHARACTER объявляется с отрицательной длиной.
-Wtabs

По умолчанию табуляторы принимаются как пробелы, но табуляторы не являются частью набора символов Fortran. Для строк продолжения поддерживается табулятор, за которым следуют цифры от 1 до 9. -Wtabs вызовет предупреждение, если встретится табулятор. Обратите внимание, -Wtabs активен для -pedantic, -std=f95, -std=f2003, -std=f2008, -std=f2008ts и -Wall.

-Wunderflow

Выдаёт предупреждение, когда встречаются числовые выражения констант, которые приводят к UNDERFLOW во время компиляции. Включено по умолчанию.

-Wintrinsic-shadow

Предупреждает, если пользовательская процедура или процедура модуля имеет то же имя, что и встроенная функция; в этом случае может потребоваться явный интерфейс или EXTERNAL или INTRINSIC объявление, чтобы позже разрешить вызовы на желаемую встроенную функцию/процедуру. Этот параметр подразумевается -Wall.

-Wuse-without-only

Предупреждает, если оператор USE не имеет квалификатора ONLY и, таким образом, неявно импортирует все общедоступные сущности используемого модуля.

-Wunused-dummy-argument

Предупреждает об неиспользуемых формальных аргументах. Этот параметр подразумевается -Wall.

-Wunused-parameter

В отличие от gcc’s значения -Wunused-parameter, реализация gfortran этого параметра не предупреждает об неиспользуемых формальных аргументах (см. -Wunused-dummy-argument), а о неиспользуемых PARAMETER значениях. -Wunused-parameter подразумевается -Wextra, если также используется -Wunused или -Wall.

-Walign-commons

По умолчанию, gfortran предупреждает о каждом случае, когда переменные дополняются для правильного выравнивания внутри блока COMMON. Это предупреждение можно отключить с помощью -Wno-align-commons. См. также -falign-commons.

-Wfunction-elimination

Предупреждает, если какие-либо вызовы функций удаляются оптимизациями, включенными параметром -ffrontend-optimize.

-Wrealloc-lhs

Предупреждает, когда компилятор может вставить код для выделения или перевыделения переменной массива с изменяемым размером встроенного типа в присваиваниях встроенного типа. В горячих циклах функция перевыделения Fortran 2003 может снизить производительность. Если массив уже выделен с правильной формой, используйте спецификацию всего массива (например, (:,:,:)) для переменной слева, чтобы предотвратить проверку перевыделения. Обратите внимание, что в некоторых случаях предупреждение отображается даже если компилятор оптимизирует проверки перевыделения. Например, когда правая часть содержит ту же переменную, умноженную на скаляр. См. также -frealloc-lhs.

-Wrealloc-lhs-all

Предупреждает, когда компилятор вставляет код для выделения или перевыделения изменяемой переменной; это включает скаляры и производные типы.

-Wcompare-reals

Предупреждает при сравнении вещественных или комплексных типов на равенство или неравенство. Этот параметр подразумевается -Wextra.

-Wtarget-lifetime

Предупреждает, если указатель в присваивании указателей может быть длиннее, чем его целевая переменная. Этот параметр подразумевается -Wall.

-Wzerotrip

Предупреждает, если цикл DO известно, что он выполняется ноль раз во время компиляции. Этот параметр подразумевается -Wall.

-Werror

Преобразует все предупреждения в ошибки.

См. Параметры для запроса или подавления ошибок и предупреждений в Руководстве по использованию GNU компилятора (GCC), для получения информации о дополнительных параметрах, предлагаемых GBE, используемым gfortran, gcc и другими GNU компиляторами.

Некоторые из них не имеют эффекта при компиляции программ, написанных на Fortran.

Далее: Параметры отладки, Предыдущее: Параметры предобработки, Вверх: Вызов GNU Fortran [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.4.0/gfortran/Error-and-Warning-Options.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API