Gfortran编译错误:(1)处的逻辑必须与.eqv进行比较。代替==

Dav*_*vid 1 fortran gfortran

我正在使用Gfortran编译一个fortran代码。使用Intel fortran编译器我从未遇到这些编译错误。Gfortran编译器抱怨if语句比较中使用“ ==”。具体来说,它给出了错误

Error: Logicals at (1) must be compared with .eqv. instead of ==
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么Gfortran需要.eqv。用法而不是==?

Ian*_*ush 5

Gfortran抱怨是因为这是标准Fortran所要求的-逻辑变量的相等性应通过.eqv进行测试。。英特尔编译器不抱怨的原因是,默认情况下,它不针对标准Fortran进行编译,而是针对具有特定于Intel Fortran的某些扩展的标准Fortran进行编译。不保证其他编译器也支持这些扩展。用==测试逻辑是否相等是这些扩展之一,因此gfortran不支持它。我强烈建议您修改代码以使用标准方法,并查找适当的编译器标志,以便将来仅使用标准Fortran。

  • ifort具有-stand compile标志来警告这种用法,包括将字符和整数视为可互换的其他方式。 (3认同)
  • 我在2000年写过这个书-https://software.intel.com/zh-cn/forums/intel-visual-fortran-compiler-for-windows/topic/275071#comment-1548435 (2认同)