如果我问了一个非常愚蠢的问题,我很抱歉;我的Fortran不是很好。我正在移植一些旧的Fortran代码,并遇到了这个子程序定义:
SUBROUTINE SET_HYDROMODULE(HYDROMODULE)
IMPLICIT NONE
INTEGER*4 HYDROMODULE [VALUE]
...
END
Intel Fortran 毫不费力地通过了此操作,但启用非标准语言特性的警告时它会发出以下警告:
warning #7009: Attribute syntax is not standard F95
gfortran认为它是对共存数组规范的一种尝试,但它并不是有效的规范。
有人能告诉我[VALUE]
子句的意思吗?
编辑 它是指定按值传递的非标准方式吗?它是否等同于这个:
INTEGER*4, VALUE :: HYDROMODULE
我在c语言互操作代码中经常看到这种情况,这表明了这一点。
[VALUE]
是DEC Fortran的遗留物之一,它是Intel Fortran的祖先之一,并实现了许多扩展到其当时标准FORTRAN(或Fortran)中。我不确定它的意思是否与Fortran 2003标准的VALUE
属性完全相同,也不确定它是否不同。有人应该在互联网上搜索解释。或者等待Steve Lionel醒来并做出贡献。 - High Performance Mark