Что делает тег [REFERENCE] в объявлении аргумента? - PullRequest
1 голос
/ 27 сентября 2011

Я пишу пользовательскую функцию обратного вызова на Фортране для части программного обеспечения (пример здесь ), которая включает в себя следующее объявление аргумента

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 передает все по ссылке (а не по значению).Конечно, в справке компилятора ничего нет, и поиск в Интернете затруднителен, потому что слово «ссылка» используется настолько сильно по отношению к Фортрану, что я не знаю, как его сузить.

Править вышеуказанное должно совпадать с

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 Ответ

2 голосов
/ 27 сентября 2011

Я предполагаю, что продукты MS здесь.Fortran может быть передан по значению или по ссылке, если используется атрибут C или STDCALL.Смотрите здесь:

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

...