Fortran: инициализировать все переменные для определенного значения по умолчанию
Я работаю над спагетти-кодом Fortran ~40 лет с большим количеством переменных, которые неявно объявляются. Поэтому нет простого способа узнать, какие переменные существуют в коде, чтобы инициализировать их значения. Теперь, есть ли способ сказать компилятору (например, Intel Fortran) инициализировать все переменные в коде к определенному значению по умолчанию (например, -999), отличному от нуля или очень большому числу, как предусмотрено компилятором Intel?
2 ответа
gfortran
предоставляет несколько вариантов для этого. Целые числа могут быть инициализированы с -finit-integer=n
где n
является целым числом Для реальных чисел вы можете использовать -finit-real=<zero|inf|-inf|nan|snan>
, Вместе с -ffpe-trap=denormal
это может быть очень полезно, чтобы получить неинициализированные реалы.
Вы, вероятно, хотите:
ifort -check uninit
Обратите внимание на man-страницу, которая проверяет только скаляры
Кроме того, на основании быстрого тестирования это довольно слабая проверка. Это не улавливает эту простую вещь, например:
program test
call f(i)
end
subroutine f(j)
write(*,*)j
end
возвращается 0
..
Полагаю, лучше, чем ничего.