问题描述:

I am working on a ~40 years old Fortran spaghetti code with lots of variables that are implicitly declared. So there is not a simple way to even know what variables exist in the code in order to initialize their values. Now, is there a way to tell the compiler (for example Intel Fortran) to initialize all variables in the code to a specific default value (e.g., -999) other than zero or a very large number, as provided by Intel compiler?

网友答案:

gfortran provides some options for this. Integers can be intialized with -finit-integer=n where n is an integer. For real numbers you can use -finit-real=<zero|inf|-inf|nan|snan>. Together with -ffpe-trap=denormal this can be very helpful, to get uninitialized reals.

网友答案:

You probably want :

 ifort -check uninit

Note per the man page this only checks scalars

Also, based on some quick testing it is a pretty weak check. It doesn't catch this simple thing for example:

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

returns 0 ..

I suppose its better than nothing though.

相关阅读:
Top