[REFERENCE]标签在参数声明中的作用是什么?

时间:2011-09-26 20:26:33

标签: fortran pass-by-reference

我正在Fortran中为一个包含以下参数声明的软件(例如here)编写一个自定义回调函数

SUBROUTINE CONTACT_FORCE(TIME,UPAR,NPAR,PEN,RVEL,JFLAG,IFLAG,RESULT)
!DEC$ ATTRIBUTES DLLEXPORT,C::CONTACT_FORCE
...
DOUBLE PRECISION RESULT[REFERENCE](6)   !Compiles ok

使用Compaq Visual Fortran 6可以很好地编译。所以我的问题是[REFERENCE]标记是做什么的?我认为Fortran passes everything by reference(而不是价值)。当然,编译器中没有任何内容可以帮助解决这个问题,并且在线搜索很困难,因为关于Fortran的单词引用非常多,我不知道如何缩小它。

修改以上内容必须与

相同
SUBROUTINE CONTACT_FORCE(TIME,UPAR,NPAR,PEN,RVEL,JFLAG,IFLAG,RESULT)
!DEC$ ATTRIBUTES DLLEXPORT,C::CONTACT_FORCE
!DEC$ ATTRIBUTES REFERENCE::RESULT
...
DOUBLE PRECISION RESULT(6)   !Compiles ok

1 个答案:

答案 0 :(得分:2)

我在这里假设MS产品。如果使用CSTDCALL属性,可以使Fortran按值或通过引用传递。见这里:

http://msdn.microsoft.com/en-us/library/aa294334(v=vs.60).aspx