gpt4 book ai didi

fortran - 英特尔 Fortran 值属性

转载 作者:行者123 更新时间:2023-12-02 18:36:09 29 4
gpt4 key购买 nike

如果这是一个非常愚蠢的问题,我很抱歉;我的 Fortran 不太好。我正在移植一些旧的 Fortran 代码,并遇到了这个子例程定义:

SUBROUTINE SET_HYDROMODULE(HYDROMODULE)
IMPLICIT NONE
INTEGER*4 HYDROMODULE [VALUE]
...
END

英特尔 Fortran 毫不眨眼地通过了这一点,尽管启用了非标准语言功能的警告,但它会发出以下警告:

warning #7009: Attribute syntax is not standard F95

gfortran 假定这是对 coarray 规范的尝试,尽管它不是有效的规范。

有人可以告诉我 [VALUE] 子句的含义是什么吗?

编辑这是指定按值传递的非标准方式吗?是不是相当于这个:

INTEGER*4, VALUE :: HYDROMODULE

我似乎在 c 互操作性代码中经常看到它,这表明了这一点。

最佳答案

VALUE 属性是在 Fortran 2003 中添加的,因此它不适用于 Fortran 95 也就不足为奇了。Fortran 标准 (2008) 在第 5.3.18 节“VALUE 属性”中指定。根据我在那里读到的内容,需要将其指定为

INTEGER*4, VALUE :: HYDROMODULE

标准中的第 5.4.16 节定义了第二种形式,即 VALUE 语句:

INTEGER*4 :: HYDROMODULE
VALUE :: HYDROMODULE

您提供的另一种形式似乎是英特尔扩展。 gfortran supports the VALUE attribute (至少在 4.9 版本中)。

快速搜索发现,除了确保 inter-operability VALUE 属性确实可以用于强制执行某种按值调用,从 here :

When this attribute is specified, the effect is as if the actual argument is assigned to a temporary, and the temporary is the argument associated with the dummy argument. The actual mechanism by which this happens is determined by the processor.

关于fortran - 英特尔 Fortran 值属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25419534/

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