gpt4 book ai didi

Fortran 'call' 语句 : what can it actually call?

转载 作者:行者123 更新时间:2023-12-01 22:41:10 35 4
gpt4 key购买 nike

我继承了大约 400 行写得非常奇怪的 Fortran 77 代码,我正在尝试逐步分析它以使其在我的脑海中清晰。

无论如何,我有一个类似 header 的文件(实际上是一个 .h,但其中的代码是 fortran 而不是 C/C++),其中只有两个语句,称为 getarg .h:

character*80 serie
integer ln

然后我有另一个名为 getserie.h 的 Fortran 文件 (.f),其中包含以下代码:

subroutine getserie(serie, ln)
include 'getarg.h'
call getarg(1, serie)
ln = index(serie, ' ') - 1
return
end

我的问题是:我可以调用一个只有变量声明的外部文件吗?这样做的效果如何?

最佳答案

不可以,您只能调用子例程。这意味着子程序被指定为 subroutine。然而,子例程的定义不必在您的源文件中。它只需要在链接时提供。

getarg 子例程可能是编译器的一个内在子例程 gets the command line arguments .这意味着编译器自动将子例程的代码提供给链接器。

文件 getarg.h 没有以任何方式被调用。它的内容只是直接复制到 include 语句的地方。

在某些情况下,您需要有一个可用的被调用子例程的(显式)接口(interface),但在更高版本的 Fortran 90 和更高版本中。在这些现代版本中,您通常将子例程和函数放在模块中,以便编译器可以检查您是否正确调用了它们。

关于Fortran 'call' 语句 : what can it actually call?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13179137/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com