【问题标题】:Fortran IIFIX unknown symbolFortran IIFIX 未知符号
【发布时间】:2020-10-16 14:23:45
【问题描述】:

我有一个旧的 fortran 代码使用 GFORTRAN 编译得很好。

但是当我尝试调用一个函数时,我收到以下错误:

undefined symbol: iifix

我在代码中发现了 3 个该函数,它们都在相同的上下文中:

(some blah blah blah)
INTEGER*2  IWAH(24)
real*4     AH(9000)

(more blah blah blah)
iwah (3) = iifix (ah (3))

(and the blah blah blah continues...)

搜索“IIFIX”我发现只有“IFIX()”可以将实数转换为整数。这对我来说很有意义,因为变量格式适合函数目的,但是....我不知道。我不知道我在做什么......

如何安全地替换此功能? 或者...我该如何解决这个错误?

我正在使用 gfortran,我的代码以“.f90”结尾

【问题讨论】:

    标签: fortran gfortran


    【解决方案1】:

    首先,integer*2real*4 不可移植。我会忽略这个问题。您可能想要的是将iifix(ah(3)) 更改为int(ah(3),2)

    【讨论】:

    • 谢谢。我会试试这个。关于integer*2real*4 的便携性……你让我很担心。严重吗?
    • 不,这通常并不严重(除非您使用的编译器以不同方式解释事物)。 integer*2 通常(总是?)解释为 2 字节有符号整数,real*4 是 4 字节浮点实体。使用 selected_integer_kindselected_real_kind 内部函数获取适当类型的可移植方法。
    • @evets 你有 iifix 的参考吗?
    • 固定类型 2 也不是可移植的,所以 integer*2 没那么重要,至少总是两个字节或完全失败。可以改用kind(IWAH)
    • iifix 似乎来自 DEC Fortran。文档显示integer*2 iifix(real*4) 的接口。您可以通过搜索 "iifix" fortran 找到文档。谷歌需要双引号来强制匹配iifix
    猜你喜欢
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 2017-01-22
    相关资源
    最近更新 更多