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