我正在重写一些代码以使用 gfortran 编译器编译程序,而不是我通常使用的 ifort 编译器。代码如下:
_Subroutine SlideBits (WORD, BITS, ADDR)
Implicit None
Integer(4) WORD
Integer(4) BITS
Integer(4) ADDR
Integer(4) ADDR1
ADDR1 = 32 - ADDR
WORD = (WORD .And. (.Not.ISHFT(1,ADDR1))) .Or. ISHFT(BITS,ADDR1)
End_
当我使用 gfortran 编译器编译上述代码时,我收到此错误:
WORD = (WORD .And. (.Not.ISHFT(1,ADDR1))) .Or. ISHFT(BITS,ADDR1)
Error: Operand of .NOT. operator at (1) is INTEGER(4)
进入子程序的所有三个变量都是整数。我环顾四周,gfortran wiki 指出 gfortran 编译器应该能够处理应用于整数值的逻辑语句。我访问过的其他几个站点要么引用了 gnu wiki,要么同意它。这是我第一次看到这个错误,因为我通常使用的英特尔 Fortran 编译器 (ifort) 编译干净。