[注:包含重复前一个问题,但单独发布]
我正在编译一个程序,它被称为编译与努力使用gfortran。但是,编译器在
行失败了。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
即使是对这种行为的解释也会很感激。
欢呼,德里克
编译错误的原因很可能是1.0
和XX(4)
的类型+类型不匹配,Fortran标准要求SIGN
的参数在类型和类型上都匹配。由于您没有向我们展示数组XX
的声明,我有信心断言它可能被声明为real
和kind=kind(1.0d0)
。