0

在 Fortran 中,是否可以将函数放在一个公共块中,如下所示:COMMON /myblock/ func(其中 x 是某个变量,func 是一个函数)。

我的问题是我想创建一个函数 s(x),它调用外部函数 func(x) 但没有在 s(x) 中传递 func。对于我的项目,s(x) 必须是只有一个变量的函数,即我不想这样做:function s(x,func) s=func(x)

相反,我希望我能做到:function s(x) common /myblock/ func s=func(x)

或者,如果有人对使用模块或其他东西有其他建议,那就太好了。

提前感谢您的帮助。

○。

然后在调用 s(x) 的子例程中具有相同的公共 (myblock)。

4

4 回答 4

2

我不相信这可以通过任何便携式方式实现。一些实现可能允许您使用一些技巧来做到这一点。

于 2011-05-22T15:47:47.567 回答
2

执行此操作的现代方法是使用指向函数的指针。指针可以作为参数传递,或者为了设计这个问题,可以放入模块中。例如,参见Fortran 中的函数指针数组

于 2011-05-22T20:05:38.623 回答
1

现代 fortran 标准禁止这样做。从 Fortran 2003 的 5.5.2 开始:

公共块对象不应是......函数名称,条目名称......

无论如何,使用全局变量来传递非常量数据只是一个糟糕的想法。正如 ja72 指出的那样,您可以使用模块来执行此操作,但我拒绝使用示例代码进行演示。

于 2011-05-22T16:56:42.993 回答
1

我认为您不应该为此使用公共块,而是使用模块。将您的函数func放在一个名为的模块中myfunctions,然后在需要时插入 atuse myfunctions语句,仅此而已。

于 2011-05-22T16:43:51.333 回答