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

时间:2018-08-18 04:28:08

标签: fortran gfortran

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

@CacheConfig(cacheManager = "ehCacheManager")
@Target(value = ElementType.TYPE)
@Retention(value = RetentionPolicy.RUNTIME)
public @interface EhCacheable {
}

@EhCacheable
@Service
public class PolicyServiceImpl implements Policy {
}

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

1 个答案:

答案 0 :(得分:4)

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