2

[注意:包含上一个问题的重复,但作为单独的问题单独发布]

我正在编译一个已知可以使用 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 

即使是对这种行为的解释也将不胜感激。

干杯,

德里克

4

1 回答 1

3

编译错误的原因很可能是1.0and的 type+kind 不匹配XX(4),Fortran 标准要求参数SIGN在 kind 和 type 上都匹配。由于您没有向我们展示数组的声明,XX我有信心断言它可能被声明为realwith kind=kind(1.0d0)

于 2013-04-29T14:43:23.293 回答