下面的代码使用了一个长度可分配的字符变量。
PROGRAM testprog
IMPLICIT NONE
CHARACTER(LEN=5) :: param
CHARACTER(LEN=:), ALLOCATABLE :: val
param = '12455'
val = param
WRITE(*,*) val
END PROGRAM testprog
我使用gfortran 7.5或8.4版本编译它,所有警告都已激活(选项-Wall(,我得到以下警告:
test.f90:6:0:
val = param
Warning: ‘.val’ may be used uninitialized in this function [-Wmaybe-uninitialized]
该程序有效。但是,我不明白为什么会出现这个警告信息。
这是一个编译器错误。它是众所周知的,但尚未在GCC中固定。您可以在上查看报告https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91442
您可以忽略它,也可以使用-Wno-maybe-uninitialized
禁用"可能在未初始化时使用"警告,或者使用优化(-O1及更多(进行编译。