以下程序使用ifort(版本12)进行编译,但不使用GFortran编译(最高版本为4.8):
PROGRAM TEST
IMPLICIT NONE
REAL,DIMENSION(2,2)::X=(/1,2,3,4/)
WRITE(*,*) X
END PROGRAM TEST
GFortran给出错误
REAL,DIMENSION(2,2)::X=(/1,2,3,4/)
1
Error: Incompatible ranks 2 and 1 in assignment at (1)
Ifort编译程序并给出预期的输出。这是GFortran中的错误还是intel fortran只允许非标准数组初始化?
答案 0 :(得分:7)
将数组声明行重写为:
REAL,DIMENSION(2,2) :: X = RESHAPE([1,2,3,4],[2,2])
ifort以另一种方式编译它的原因是非标准实现。这是一种可以初始化排名高于1的数组的方法。