Vskazka
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору akaGM Цитата: как раз таки нужна, т.к. она стоит в _вызывающей_ (test зовёт F) п/программе | Вы не очень правильно трактуете термин "вызывающая" в этом случае. Попробуйте закоментировать эту строчку и скомпилировать. Ничего не изменится. Эта директива здесь - и не мешает и не нужна. как собственно и объявление external test в головной программе закоментируйте все это и скомпилируйте. А вот код для проверки Код: real*8 test,g external g ! external test intrinsic dsin, dcos, dble a=sin(1d0) write (*,*) test(dsin, 10.d0) write (*,*) test(dcos, 10.d0) write(*,*) test(g, 10.d0) ! можешь откомментировать ! write (*,*) test(dble, 10.d0) end real*8 function test(F, X) real*8 F, X ! external F test = F(X) return end real*8 function g(z) real*8 z g=2*z end | Если Вы закоментируете здесь external g в головной - то будет ругань Кстати, похоже объявление intrinsic заменяет для таких функций и external. Вообще, объявление external необходимо делать в той програмной единице, где есть вызов процедуры с актуальным параметром - процедурой (функцией). Там этот актуальный параметр должен быть объявлен как external. А формальные параметры объявлять external не обязательно. Хотя и можно. По-моему, не противоречит ничему - но не влияет. Если, конечно, эта функция опять не передается как актуальный параметр еще какой-то процедуре. Тогда опять же надо. | Всего записей: 382 | Зарегистр. 24-11-2003 | Отправлено: 15:57 23-11-2010 | Исправлено: Vskazka, 16:15 23-11-2010 |
|