gfortran不允许具有不同组件长度的字符数组

Mar*_*lex 5 fortran gfortran fortran90

请参阅下面的示例

 program test

 character(10),dimension(5):: models = (/"feddes.swp", "jarvis89.swp", "jarvis10.swp" ,   "pem.swp", "van.swp"/)

end
Run Code Online (Sandbox Code Playgroud)

返回以下错误:

数组构造函数中不同的CHARACTER长度(10/12)(1)

ifort编译器没有错误.为什么gfortran会发生这种情况,有没有办法解决这个问题?

fra*_*lus 11

在构造函数中有一些长度为12,因此使用长度12可能更好.

另外,请改用

character(len=12), dimension(5) :: models = [character(len=12) :: "feddes.swp", &
                "jarvis89.swp", "jarvis10.swp", "pem.swp", "van.swp"]
Run Code Online (Sandbox Code Playgroud)

可能更好,如果你有编译器支持,是

character(len=*), dimension(*) :: ...
Run Code Online (Sandbox Code Playgroud)