4

次のプログラムは 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 は単に非標準配列の初期化を許可しているのでしょうか?

4

1 に答える 1

9

配列宣言行を次のように書き直します。

REAL,DIMENSION(2,2) :: X = RESHAPE([1,2,3,4],[2,2])

ifort が別の方法でコンパイルした理由は、非標準の実装です。これは、1 より高いランクの配列を初期化する方法です。

于 2012-05-11T18:44:51.587 に答える