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..

Полагаю, лучше, чем ничего.

Другие вопросы по тегам