| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Fortran > Первая функция на GNU Fortran |
| Автор: Dark Elf 6.4.2014, 10:53 | ||
| Добрый день Пишу первую в жизни функцию на Фортран 2003 (если что то в Фортран 90 те же результаты):
При попытке скомпилить (при включении отмеченной строчки компилятор ругается на ошибку: Function 'arcsin' at (1) has no IMPLICIT type Не подскажете ли случайно как это исправить? |
| Автор: Фантом 6.4.2014, 12:26 | ||||
| Проблема в том, что на момент компиляции программы функция еще не объявлена и, соответственно, неизвестна. Можно сделать следующее: 1) Описать в программе arcsin как "переменную" типа real. Это очень плохой "костыль", соранившийся ради обратной совместимости с древними стандартами языка, но все же допустимый. 2) Вставить в заголовок основной программы (после описания переменных) интерфейсный блок примерно такого вида:
В терминах, возможно, более знакомых C/C++ это объявление прототипа функции. Это уже нормально, но в данном случае является излишеством. 3) Воспользоваться существующем в современном Фортране механизмом модулей и встроенных функций. В данном случае надо просто перенести строку end program test в конец файла, а на ее место вставить новую строку contains. Это наиболее нормальный способ. Однако при этом действие оператора implicit none в основной программе будет распространяться также и на функцию, поэтому тип аргументов iter и value нужно будет описать. Заодно, кстати, можно немного упростить описание функции. Если оформить ее заголовок как
то переменную s можно будет использовать так же, как и раньше, но вот строчка arcsin=s не понадобится, в качестве значения функции будет возвращено содержимое переменной s в момент окончания работы функции. |
| Автор: Dark Elf 6.4.2014, 13:32 |
| ***DEL*** |