使用具有可分配长度的字符变量的 Fortran 程序在编译时总是显示警告

Fortran program using character variable with allocatable length always shows a warning when compiling

我有以下代码,它使用具有可分配长度的字符变量。

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 禁用 "may be used uninitialized" 警告或使用优化(-O1 及更多)进行编译。