Gfortran compile Error: Logicals at (1) must be compared with .eqv. instead of ==

Gfortran compile Error: Logicals at (1) must be compared with .eqv. instead of ==

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

Error: Logicals at (1) must be compared with .eqv. instead of ==

谁能解释一下为什么 Gfortran 需要 .eqv。用法而不是==?

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