[注意:包含重复上一个问题,但作为单独的问题单独发布]
我正在编译一个已知使用gfortran使用ifort编译的程序。但是编译器在行
上失败了IF (IANG.NE.0) IANG=IANG*SIGN(1.0,XX(4))
编译错误:
make: *** [main_file.o] Error 1
将此行更改为(注释D0)
IF (IANG.NE.0) IANG=IANG*SIGN(1.0D0,XX(4))
解决问题
编译器标志是:
gfortran -fno-automatic -mcmodel=medium -O2 -ffast-math main_file.o -o main_file
即使对此行为的解释也会受到赞赏。
干杯,
德里克
答案 0 :(得分:3)
编译错误的原因可能是类型+类型1.0
和XX(4)
之间的不匹配,Fortran标准要求SIGN
的参数在两种类型中都匹配并输入。由于您没有向我们展示数组XX
的声明,因此我有信心断言它可能被real
声明为kind=kind(1.0d0)
。