有什么方法可以为 fortran 模块中的变量编写 EQUIVALENCE 吗?

Is there any way to write EQUIVALENCE for a variable in a fortran Module?

嗯,我在 Fortran 中遇到了一个问题,我需要对一个已经在其他人编写的模块中声明的变量使用等价(现在可能已经死了,否则我会联系 him/her).

模块中的变量为REAL类型。我想在其中存储一个 INTEGER 值。 如果我直接这样做,错误的数据将以 REAL 类型存储。 我曾尝试在模块中使用等价性,但没有成功。 有帮助吗?

嗯,EQUIVALENCE 是一个旧关键字,在现代 Fortran 中应该避免使用它,因为它会使代码产生误导,但它还没有从 Fortran 标准中删除,AFAIK。

但是,如果您只需要将整数的逐位表示形式存储在实变量中,我宁愿建议使用内部函数 TRANSFER 来逐字传递二进制将一个变量的内容转换为另一种类型的变量,无需任何转换,也不会引发错误。所以,假设你真正的模块变量是 x 而你的整数值是 i 你可以简单地做:

x = TRANSFER(i,x)

第二个参数可以是任何实数变量,不一定是 x 本身,它只是给编译器提示结果是实数类型,将它赋值给实变量。