Spec-Zone.ru › GNU Fortran 5

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, -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.
-Wintrinsics-std
Предупреждает, если gfortran обнаруживает процедуру с именем, похожим на встроенную функцию, недоступную в текущем выбранном стандарте (с -std) и обрабатывает её как EXTERNAL процедуру из-за этого. -fall-intrinsics может быть использован, чтобы никогда не вызывать этого поведения и всегда связываться со встроенной функцией независимо от выбранного стандарта.
-Wreal-q-constant
Выдает предупреждение, если действительное число содержит экспоненциальный символ.
-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
Выдает предупреждение при обнаружении выражений числовых констант, которые приводят к ситуации ПОДПОРОГА во время компиляции. Включено по умолчанию.
-Wintrinsic-shadow
Предупреждает, если пользовательская процедура или процедура модуля имеет такое же имя, как встроенная функция; в этом случае может потребоваться явный интерфейс или EXTERNAL или INTRINSIC объявление, чтобы вызовы в дальнейшем разрешались на желаемую встроенную функцию/процедуру. Этот параметр подразумевается параметром -Wall.
-Wuse-without-only
Предупреждает, если оператор USE не имеет квалификатора ONLY и, таким образом, неявно импортирует все открытые сущности используемого модуля.
-Wunused-dummy-argument
Предупреждает об неиспользуемых параметрах-аргументах. Этот параметр подразумевается параметром -Wall.
-Wunused-parameter
В отличие от gcc означает -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
Предупреждает, когда компилятор может вставить код для выделения или перераспределения переменной массива с параметром ALLOCATABLE базового типа в операциях присваивания. В циклах с высокой производительностью функция перераспределения Fortran 2003 может снизить производительность. Если массив уже выделен с правильной формой, рассмотрите использование спецификации всего массива (например, (:,:,:)) для переменной слева, чтобы предотвратить проверку перераспределения. Обратите внимание, что в некоторых случаях предупреждение отображается даже если компилятор оптимизирует проверку перераспределения. Например, когда правая часть содержит ту же переменную, умноженную на скаляр. См. также -frealloc-lhs.
-Wrealloc-lhs-all
Предупреждает, когда компилятор вставляет код для выделения или перераспределения переменной с параметром ALLOCATABLE; это включает скаляры и производные типы.
-Wcompare-reals
Предупреждает при сравнении вещественных или комплексных типов на равенство или неравенство. Этот параметр подразумевается параметром -Wextra.
-Wtarget-lifetime
Предупреждает, если указатель в присваивании указателей может быть длиннее, чем его целевой объект. Этот параметр подразумевается параметром -Wall.
-Wzerotrip
Предупреждает, если цикл DO известен как выполняющий нулевое количество раз во время компиляции. Этот параметр подразумевается параметром -Wall.
-Werror
Преобразует все предупреждения в ошибки.

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

Некоторые из них не действуют при компиляции программ, написанных на Fortran.

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

Spec-Zone.ru

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