4

我正在编写一个有 40 年历史的 Fortran 意大利面条代码,其中包含许多隐式声明的变量。因此,甚至没有一种简单的方法可以知道代码中存在哪些变量以初始化它们的值。现在,有没有办法告诉编译器(例如英特尔 Fortran)将代码中的所有变量初始化为特定的默认值(例如 -999),而不是英特尔编译器提供的零或非常大的数字?

4

2 回答 2

4

gfortran为此提供了一些选项。整数可以用-finit-integer=n其中n的整数来初始化。对于实数,您可以使用-finit-real=<zero|inf|-inf|nan|snan>. 再加上-ffpe-trap=denormal这对获得未初始化的实数非常有帮助。

于 2014-09-11T19:26:51.073 回答
2

你可能想要:

 ifort -check uninit

请注意每个手册页,这仅检查标量

此外,基于一些快速测试,这是一个非常薄弱的​​检查。它没有捕捉到这个简单的东西,例如:

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

返回0..

我想它总比没有好。

于 2014-09-11T17:24:47.453 回答