![]() |
|
|
![]()
|
|
| Mormishka |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
Не могу понять, в фортране нельзя делать глобальные переменные?
|
||||
|
|||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 5 Всего: 49 |
Можно, но не так. Либо объявляйте переменную там, где это положено (после program) - тогда она будет глобальной для всех внутренних процедур и функций (после contains). Либо описывайте ее в модуле и цепляйте этот модуль везде, где требуется.
|
|||
|
||||
| Mormishka |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
Фантом,
Например, у меня есть переменная i локальная и глобальная. Так правильно? module m1 integer i end module m1
Это сообщение отредактировал(а) Mormishka - 18.12.2010, 14:00 |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 5 Всего: 49 |
В целом да, хотя в этом коде есть две синтаксические ошибки.
Кроме этого, такое определение глобальных переменных в некотором смысле избыточно. Если у Вас все состоит из основной программы и contains в том же файле, то можно не делать отдельный модуль и объявить переменную i прямо в заголовке программы. Отдельный модуль необходим тогда, когда Вы используете много процедур и функций, находящихся в разных модулях и файлах. Ну и заодно один совет. Если Вы хотите пользоваться глобальными переменными - обязательно вставляйте в заголовки всех программ, функций и процедур implicit none (или хотя бы отключайте неявное объявление переменных ключами компиляции). Это и в других случаях не помешает, но тут просто необходимо, иначе Вы замучаетесь с выяснением того, какой является та или иная переменная - глобальной или локальной, но "объявившейся" неявно. Например, если в Вашем примере в модуле сделать i переменной типа real, то возникнет интересный казус. Если модуль подключен, то i везде будет типа real. Но если Вы почему-то забудете подключить модуль, то основной файл все равно скомпилируется, но i уже будет типа integer (из-за неявного объявления). |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Fortran | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |