我有以下代码,它使用了一个可分配长度的字符变量。
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.orgbugzillashow_bug.cgi?id=91442。
你可以忽略它,或者用以下方法禁用 "可能被用于未初始化 "的警告 -Wno-maybe-uninitialized
或编译时进行优化(-O1及以上)。