Когда я компилирую тестовую программу на Фортране:
PROGRAM character_warning
CHARACTER(len=16) :: word
word = 'hi'
WRITE(*,*) word
END PROGRAM character_warning
с gfortran -Warray-bounds -O2 character_warning.f90
, я получаю предупреждение:
character_warning.f90:5:0:
5 | word = 'hi'
|
Warning: array subscript 0 is outside array bounds of 'character(kind=1)[1:16]' [-Warray-bounds]
character_warning.f90:3:0:
3 | CHARACTER(len=16) :: word
|
note: while referencing 'word'
Это только начиналось, когда я обновлялся до gfortran9 сgfortran8. Я не понимаю, почему выдается предупреждение, и хотел бы удалить его, чтобы мой сборник был чистым. Предупреждение исчезнет, если я уменьшу оптимизацию до -O1
, а также если я изменю len=16
на len=3
. Кто-нибудь знает, почему это дает предупреждение и как от него избавиться?
Точный гфортран, который я использую, это GNU Fortran (Homebrew GCC 9.2.0_1) 9.2.0