使用具有可分配长度的字符变量的 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 及更多)进行编译。
我有以下代码,它使用具有可分配长度的字符变量。
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 及更多)进行编译。