Gfortran编译错误:逻辑运算符(在位置1)必须使用.eqv.进行比较,而不是使用==。

3

我正在使用Gfortran编译Fortran代码。在使用Intel Fortran编译器时,我从未遇到过这些编译错误。Gfortran编译器对于if语句比较中使用"=="表示不满。具体来说,它会给出以下错误:

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

有人能解释一下为什么Gfortran需要使用.eqv.而不是==吗?
1个回答

8

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


3
ifort具有-stand编译标志,可警告此类用法,包括将字符和整数视为可以互换的其他方式。 - tim18
2
我在2000年写过这个 - https://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/275071#comment-1548435 - Steve Lionel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接