2014-09-11 2 views
3

Я работаю над 40-летним кодом спагетти Fortran с большим количеством переменных, которые неявно объявлены. Таким образом, нет простого способа узнать, какие переменные существуют в коде, чтобы инициализировать их значения. Теперь, есть ли способ сообщить компилятору (например, Intel Fortran) инициализировать все переменные в коде конкретному значению по умолчанию (например, -999), отличному от нуля или очень большому числу, предоставленному компилятором Intel?Fortran: Инициализировать все переменные до определенного значения по умолчанию

ответ

3

gfortran предоставляет некоторые варианты этого. Целые числа могут быть проиндексированы с помощью -finit-integer=n, где n - целое число. Для реальных номеров вы можете использовать -finit-real=<zero|inf|-inf|nan|snan>. Вместе с -ffpe-trap=denormal это может быть очень полезно, чтобы получить неинициализированные реалы.

+0

Это именно то, что мне нужно. Благодаря! – King

2

Вы, вероятно, хотите:

ifort -check uninit 

Примечание на странице человека это только проверяет скаляры

Кроме того, на основе некоторых быстрого тестирования он является довольно слабым проверка. Он не улавливает эту простую вещь, например:

program test 
call f(i) 
end 
subroutine f(j) 
write(*,*)j 
end 

возвращается 0 ..

Я полагаю, его лучше, чем ничего, хотя.

+0

Подробнее о слабости этой проверки: https://www.nas.nasa.gov/hecc/assets/pdf/training/UnInit_Fix_your_code_2012_10_31.pdf – astrojuanlu

Смежные вопросы