我想使用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
答案 0 :(得分:1)
等效声明必须位于声明部分。你无法用条件控制它。
现代Fortran更喜欢transfer()
转换位模式。如果您不需要类型转换,请使用指针。
我实际上在我的代码的一个地方使用等价,英特尔编译器无法优化transfer()
,但这是一个例外,在使用之前你应该三思而行。