0

我想用Equivalence. 如何在 gfortran-5 中使用它?

我在用:

Select Case (dst)
Case ("cm")
  Equivalence :: (cm2Mm_r32, r32), (cm2Mm_r64, r64)
  Call qcdiv (qb, qa, r32, r64, cm2Mm_r128)
Case ("m")
  Equivalence :: (m2Mm_r32, r32), (m2Mm_r64, r64)
  Call qcdiv (qb, qa, r32, r64, m2Mm_r128)
Case ("Km")
  Equivalence :: (Km2Mm_r32, r32), (Km2Mm_r64, r64)
  Call qcdiv (qb, qa, r32, r64, Km2Mm_r128)
End Select
4

1 回答 1

1

等价声明必须位于声明部分。你不能用条件来控制它。

现代 Fortran 更喜欢transfer()转换位模式。如果不需要类型转换,请使用指针。

我实际上在我的代码的一个地方使用了等价,英特尔编译器无法优化transfer(),但这是一个例外,你应该在使用它之前三思而后行。

于 2015-03-11T21:38:21.397 回答