我正在使用Gfortran编译Fortran代码。在使用Intel Fortran编译器时,我从未遇到过这些编译错误。Gfortran编译器对于if语句比较中使用"=="表示不满。具体来说,它会给出以下错误:
Error: Logicals at (1) must be compared with .eqv. instead of ==
有人能解释一下为什么Gfortran需要使用.eqv.而不是==吗?
Gfortran在抱怨,因为这是标准Fortran所要求的-逻辑变量的相等性应通过.eqv.进行测试。Intel编译器不抱怨的原因是默认情况下它不使用标准Fortran编译,而是使用一些特定于Intel Fortran的扩展名。这些扩展名不能保证被其他编译器支持。使用 == 测试逻辑相等性就是其中之一,而恰巧gfortran不支持它。我强烈建议您修改代码以使用标准方法,并查找适当的编译器标志,以便将来只使用标准Fortran。