首页 > 解决方案 > 应用于可分配字符串时,gfortran 中的调整错误

问题描述

我正在修改使用 ifort 开发的程序以与 gfortran 一起使用,并且我遇到了调用adjustl可分配字符串的问题。以下程序在使用 gfortran 编译时会产生意外的输出:

program compilercheck
    implicit none
    character(len=:), allocatable :: string

    string = " Hi" !Note leading space
    string = adjustl(string(2:))

    if(string == "Hi") then
        write(*,*) "You compiled with ifort"
    else
        write(*,*) "You compiled with gfortran"
    endif
end program compilercheck

它没有像预期的那样string变成“Hi”(并且在使用 ifort 编译时),它最终变成了“H”。可以通过将调用更改为adjustl(...)into来解决该错误adjustl(trim(...)),但是这会影响结果(没有尾随空格)似乎很奇怪。gfortran 中是否存在错误,或者代码是否超出了 ifort 允许的 fortran 规范?我正在使用 gfortran 7.5.0 版作为参考。

标签: fortrangfortran

解决方案


推荐阅读