【发布时间】:2011-05-03 21:59:57
【问题描述】:
我正在尝试使用 gfortran 从源代码构建旧版 FORTRAN 代码。我终于能够成功构建它,但是现在它运行时出现了越界错误。我使用 gdb 并将错误跟踪到使用 loc() 内部函数的函数。当我尝试打印 loc(ae) 的值时,其中 ae 是我传递的整数值,我收到错误“当前上下文中没有符号“loc”。”我尝试使用 ifort 11.x 进行编译并使用 DDT 进行调试并得到相同的错误。对我来说,这意味着编译器对内在函数一无所知。
稍微阅读后发现 loc 内在函数不是 F77 标准的一部分,所以这可能是问题的一部分。我在下面发布了内在函数的定义,但我不知道如何将其实现到我的代码中,以便可以使用 loc()。
有什么建议还是我误解了我的问题?因为 gfortran 和 ifort 由于越界错误而在同一个地方崩溃,但是使用 loc() 的函数在两个编译器之间返回相同的大数字。如果两个编译器都返回相同的 loc 值,那么 loc() 将不起作用,这似乎有点奇怪。
用法:
iaddr = loc(obj)
地点:
对象 是需要其地址的变量、数组、函数或子程序。 地址 是一个地址为“obj”的整数。地址是一样的 LARn 存储的格式 说明。
说明:
LOC用于获取地址 某物。返回的值不是 在 Fortran 中非常有用,但可能 GMAP 子程序需要,或 很特别的调试。
【问题讨论】:
标签: fortran legacy gfortran intrinsics