Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Tools] Передача управления и переменных (как?), из одной программы в другую 
:(
    Опции темы
MetalHeart
  Дата 10.9.2009, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Добрый день!
Форумчане, прошу вашей помощи..

Задача следующая:

Есть Workspace в Fortran, в этой рабочей области есть два проекта. Это две самостоятельно работающих программы с их подпрограммами. Каждая имеет свои библиотеки, но одну рабоучю директорию.

Нужно  что бы первая программа в процессе выполнения вызвала (запустила) другу программу, которая бы вычислила то что ей пологается и передала вычесленные переменные в одном массиве. Потом бы вторая программа передала управление обратно первой. Все. 
Как это организовать?

Т.е. передачу управления и передачу значений переменного массива (наверное это называется глобальной переменной?).

PM MAIL   Вверх
FCM
Дата 10.9.2009, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



Какого типа каждый проект?
Цитата(MetalHeart @  10.9.2009,  11:39 Найти цитируемый пост)
Это две самостоятельно работающих программы 


Цитата(MetalHeart @  10.9.2009,  11:39 Найти цитируемый пост)
Нужно  что бы первая программа в процессе выполнения вызвала (запустила) другу программу


Если бы речь шла об Intel Visual Fortran я бы сказал, что надо сделать, чтобы один проект был с главной программой, а другой не должен содержать главной программы. Например, один проект типа Console (с главной программой), а другой типа Static Library (с вызваемыми процедурами). При этом надо указать зависимость проектов (проект с главной программой должен зависеть от проекта с вызываемыми процедурами).  
Думаю, что и в Compaq Visual Fortran то же самое. 

С точки зрения синтаксиса вызова будет "по барабану", находятся главная программа и вызываемая процедура в одном проекте или в разных.

Добавлено через 2 минуты и 4 секунды
Цитата(MetalHeart @  10.9.2009,  11:39 Найти цитируемый пост)
Т.е. передачу управления и передачу значений переменного массива (наверное это называется глобальной переменной?).


Массив можно "передавать" как параметры процедуры, можно и через модульный данные или COMMON-блоки.
PM MAIL   Вверх
MetalHeart
Дата 10.9.2009, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Спасибо за ответ.

То есть во второй программе нужно из управляющей программы сделать sobroutine? А в первой просто сделать ее вызов через call XXX?
И не зависимо где она будет находиться?

P.S. У меня Compaq
PM MAIL   Вверх
FCM
Дата 10.9.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



Цитата(MetalHeart @  10.9.2009,  13:55 Найти цитируемый пост)

То есть во второй программе нужно из управляющей программы сделать subroutine? А в первой просто сделать ее вызов через call XXX?

Именно это и нужно сделать!
Цитата(MetalHeart @  10.9.2009,  13:55 Найти цитируемый пост)
И не зависимо где она будет находиться?

Построение приложения состоит из трех этапов
0) препроцессорной обработки -  в Фортране используется редко
1) компиляции исходников - результатом будет создание объектных файлов, некоторые из которых содержат внешние связи (например вызов процедуры)
2) компоновки(линковки) объектных файлов "из предыдущего пункта", а также возможно других объектных файлов  (в которых содержатся процедуры и др. скомпилированные вне данного проекта) и библиотечных файлов (в которых содержатся процедуры и др., скомпилированные и скомпонованные вне данного проекта). При компоновки внешние связи разных объектников/библиотек "стыкуются".

Твой второй проект с вызываемыми процедурами будет давать объектные или библиотечные единицы компоновки, компонуемые с единицами компоновки главного проекта.

Добавлено @ 14:29
Цитата(MetalHeart @  10.9.2009,  13:55 Найти цитируемый пост)
И не зависимо где она будет находиться?

Зависимо!
Но если у тебя все это в одном workspace нужные зависимости должны установиться автоматически (во всяком случае так в Intel Fortran).

Если же ты построил статическую библиотеку в отдельном workspace, то можно явно включать ее в текущий проект. В Intel Fortran (возможно и в Compaq) можно использовать директиву линковки стат библиотеки в исходнике не включая ее явно в проект 

Это сообщение отредактировал(а) FCM - 11.9.2009, 10:40
PM MAIL   Вверх
MetalHeart
Дата 10.9.2009, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Хм... А тогда какого типа нужно сделать проект со второй (вызываемой) программой? 

Ведь если сделать просто как "Fortran Windows Aplication", то это обязывает что бы в проекте находился файл PROGRAM, а у меня, получается, что все subroutine.

Пробовал делать из этого второго проекта библиотеку, но тогда пропадает возможность использования им своих собственных библиотек. Т.е. в статическом проекте пропадает в настройках вкладка "Link"

Это сообщение отредактировал(а) MetalHeart - 10.9.2009, 17:06
PM MAIL   Вверх
FCM
Дата 10.9.2009, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



1) Делай стат библиотеку
2) Насчет библиотек, от которых зависит данная стат библиотека
   a)Попробуй просто в раздел Sources добавить соотв. lib-файлы.
   b) Можно также  использовать в исходниках директиву (уточни по help)
    !DEC$ OBJCOMMENT LIB: "NAME"
    где NAME либо полный путь к библоитеке, либо ее имя, если она помещена 
    в директорию, которая    просматривается фортран-окружением в поисках lib-файлов.

Это сообщение отредактировал(а) FCM - 11.9.2009, 10:40
PM MAIL   Вверх
MetalHeart
Дата 14.9.2009, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Вроде бы сделал, управление передается. Вторую программу сделал стат. библиотекой, в source добавил необходимый для нее .lib, а в ссылках первой программы прописал путь ко второй...

Но возникает ошибка при открытии файлов, обозначенных как программные аргументы, второй программой. Пробовал уже и в описании аргрументов первой программы ее обозначить, но не помогло. В чем может быть проблема?
PM MAIL   Вверх
FCM
Дата 14.9.2009, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



Что подразумевается под программными аргументами и что такое "в ссылках первой программы прописал путь ко второй"?

Это сообщение отредактировал(а) FCM - 14.9.2009, 18:12
PM MAIL   Вверх
MetalHeart
Дата 15.9.2009, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Программные аргументы - в свойствах проекта (ALT+F7) во вкладке DEBUG есть строка Program arguments, там у меня указаны файлы жизненно важные для этой программы.

А "в ссылках первой программы прописал путь ко второй" - это там же в свойствах, только  вкладка LINK, строка object/library modules - там указаны пути к библиотекам, там вставил путь и к библиотеки моей второй программы.


PM MAIL   Вверх
FCM
Дата 15.9.2009, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



"Покопался в Compaq - как то там не так", т.е. не совсем так, как в Intel.
Компилируется ли каждый проект в отдельности без ошибок?
Цитата(MetalHeart @  14.9.2009,  16:40 Найти цитируемый пост)
Но возникает ошибка при открытии файлов, обозначенных как программные аргументы, второй программой. 

Как это ошибка описывается?

PM MAIL   Вверх
MetalHeart
Дата 18.9.2009, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Да, конечно, обе в отдельности компилируются без ошибок.

Я похоже нашел проблему, но не знаю, как ее решить...

Вобщем сделал теперь все в  одной рабочей области, а в ней эти проекты, один из которых является стат. библиотекой.  Все работет, управление передается. Кстати, я не стал делать зависимость проектов. Это зачем?

А проблема следующая.. и возникает она в коде. Дело в том, что те библиотеки, которые используют эти программы очень похожи и многие подпрограммы, функции, переменные в них одинаковы, лишь принимают разные значения. Так вот получается так, что моя вторая программа (которая теперь стат. библиотека), передает управление подпрограммам, которые принадлежат первой программе и значения переменных в ней, конечно, не верные для второй. Надеюсь понятно объяснил smile

Как-то можно сделать так, что бы запретить второй программе обращаться в те подпрограммы и обращаться именно в директорию, где лежит ее библиотека?

Переименовывать имена очень-очень много... Не выход.

P.S. В Source files я ее библиотеку .lib включил.


PM MAIL   Вверх
FCM
Дата 18.9.2009, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



Цитата(MetalHeart @  18.9.2009,  11:58 Найти цитируемый пост)
многие подпрограммы, функции, переменные в них одинаковы, лишь принимают разные значения. Т


Не понимаю. 
1) Подпрограммы и функции идентичны или нет?
У тебя в одной программе одна и та же подпрограмма/функция может вызываться сколько угодно раз 
2)
Переменные локализованы в тех программных единицах, где они объявлены.
Переменные, могут быть доступны в нескольких программных единицах не через параметры, только с помощью COMMON-блоков и модулей.
 
Глобальными являются имена программных единиц (процедур, COMMON-блоков, модулей и редко используемых BLOCK DATA).




PM MAIL   Вверх
MetalHeart
Дата 21.9.2009, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Цитата

Подпрограммы и функции идентичны или нет? 


Да, но некоторые отличаются (иначе не было бы смысла во второй библиотеке)

Цитата

У тебя в одной программе одна и та же подпрограмма/функция может вызываться сколько угодно раз 


Это понятно.


Вот, теперь вроде разобрался! Вторая программа вызывала некоторые подпрограммы из своей библиотеки, а из файлов первой (главной программы).  Несколько таких файлов я удалил из главной программы и теперь вторая обращается туда, куда ей и нужно.  Сейчас вторая программа выполняется полностью. Теперь при переходе обратно к первой наверняка возникнут проблемы с отсутствием файлов (те что я удалил), попробую из этих файлов создать отдельную библиотеку или же вставить в уже имеющуюся.

И второй вопрос с программными аргументами так и не ясен. Сделаю скрины.

Только один получилось прикрепить. Для второй программы просто имя этого аргумента другое. И не знаю как их объеденить. Пробовал друг за другом через пробел ставить, считывается только первый. Пробовал указывать свой для каждого проекта, но считывается только тот, что в главной программе..


Это сообщение отредактировал(а) MetalHeart - 21.9.2009, 17:41

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  1.JPG 43,35 Kb
PM MAIL   Вверх
FCM
Дата 21.9.2009, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



1)А что реально должно следовать из   VLE VLE.TXT ""VLE.PCP1  ?

2)Насчет библиотек - ты их сам компилишь/компонуешь или они готовые и без исходников?
Если ты их компилишь/компонуешь сам, то можно
a) либо попробовать сделать их модульными. Далее попробуй подключать модули в тех программных единицах, где они используются. Может оказаться полезным, что при подключении модулей, модульные процедуры можно переименовывать в той программной единице, где они подключаются. 
b) либо попробовать собрать все-таки все в одну библиотеку, а идентичные по названию, но не по содержанию процедуры оформить как перегруженные (правда для этого такие процедуры должны  отличаться по типу какого-либо параметра  или их количеству - что можно сделать искуственно).
Далее в зависимости от формы вызова будет вызываться та или иная процедура.


Это сообщение отредактировал(а) FCM - 23.9.2009, 13:58
PM MAIL   Вверх
MetalHeart
Дата 23.9.2009, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Библиотеки компилю сам, исходники есть.

С первым пунктом я разобрался - аргументы подрограммы считываются в виде текста самой программой. Пробел служит разделителем, а каждый элемент нумерован. Т.е мне нужно было просто поменять порядковые номера считываемых единиц (в отрибутах оператора).

По библиотекам - второй вариант будет предпочтительней. Оформить процедедуры как перегруженные, это как? И как организовать такой "избирательный" вызов процедур?
PM MAIL   Вверх
FCM
Дата 23.9.2009, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



Выше я не точно выразился (точнее в голове сработала "С++ компонента ") - при перегрузке в Фортране на самом деле тоже понадобится переименование библиотечных процедур в самих библиотеках
(Это в С++ перегрузка осуществляется при определениях одноименных процедур, различающихся либо кол-вом параметров, либо типом параметра/параметров )

В Фортране перегрузка процедур S1 и S2 (отличающихся либо кол-вом параметров, либо типом параметра/параметров  ) реализуется заданием к ним именованного интерфейса в использующей их программной единице
Код

INTERFACE NAME
   
  SUBROUTINE S1(пар-ры)
  ...Описание параметров
  END SUBROUTINE S1
  SUBROUTINE S2(пар-ры)
  ...описание параметров
  END SUBROUTINE S2
   

END INTERFACE SUB


После чего к S1 и S2 можно обращаться по имени NAME.

Добавлено через 7 минут и 49 секунд
Поэтому, если не наводить порядок в библиотеках, может стоит попробовать с помощью модулей.

Это сообщение отредактировал(а) FCM - 23.9.2009, 14:01
PM MAIL   Вверх
MetalHeart
Дата 25.9.2009, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Все получилось, заработало! smile

Объединил в библиотеки, в каждой было по 1000 с лишним подпрограмм  smile , лишь малая часть отличалась. Зато теперь никогда путаницы с ними не будет, рано или поздно это пришлось бы делать.

На будущее, наверняка еще столкнусь, а как объявить и вызвать модуль? Т.е., например, у меня есть подпрограмма (или несколько), я ее заключаю в модуль с именем и когда необходимо, просто вызываю этот модуль, которому принадлежать это подпрограммы?


FCM, спасибо за помощь!  smile Даже не знаю как благодарить. В этой жизни все возможно, поэтому, если что, с меня пиво smile

PM MAIL   Вверх
FCM
Дата 25.9.2009, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



Цитата(MetalHeart @  25.9.2009,  14:23 Найти цитируемый пост)
а как объявить и вызвать модуль?

Первоначальная информация такова:
Код

MODULE SMTH
  <определения данных>
  CONTAINS
    
     определения процедур

END MODULE SMTH

причем данные и процедуры, вспомогательные для других компонентов модуля и не предполагаемые для внешнего использования можно локализовать аттрибутом PRIVATE.

Использование
Код

PROGRAM TEST
USE SMTH ! после чего доступны определения модульных данных и процедур, если только
                 !  они не были определены с аттрибутом PRIVATE
...
END

причем возможно подключение только некоторых модульных данных/процедур, а также подключение с переименованием. 

Если модуль локального значения, то можно просто его исходник включить в текущий проект.
Если он содержит  данных/процедур, которые будут многократно  использованы, то можно его скомпилировать отдельно, но возможно лучше скомпилировать и построить по нему библиотеку.
В таком случае для его использования в нек. прогр.ед-це следует обеспечить доступность .mod-файла на этапе компиляции прогр.ед-цы и .lib-файла - на этапе компоновки.
Совсем дело упрощает использование в модуле директивы !DEC$ ATTRIBUTES OBJCOMMENT: *** компоновки библиотеки ну и т.д. и т.п.
PM MAIL   Вверх
MetalHeart
Дата 14.10.2009, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 15.5.2009

Репутация: нет
Всего: нет




Код

MODULE SMTH
  <определения данных>
  CONTAINS
    
     определения процедур

END MODULE SMTH


А "определения процедур" это полностью подпрограмма с ее содержимым или можно только через указание имени их определить. У меня только первый вариант  получается.
PM MAIL   Вверх
FCM
Дата 14.10.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



Полностью подпрограмма или функция.

Модули также используют для хранения интерфейсов (прототипов) к функциям, определенным в других местах (подобно заголовочным файлам в С/C++)
PM MAIL   Вверх
MetalHeart
Дата 19.10.2009, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Блин, пытался сам разобраться, но не получается никак..
При компиляции моего модуля с программой пишет вот такие ошибки:
Error: The attributes of this name conflict with those made accessible by a USE statement.   [RCPAR]
Что именно ему не нравится в атрибутах никак не пойму.

Вот эта функция в модуле:

Код

!DEC$ FREEFORM
      Integer*2 function rcpar (num,string)
      Implicit Integer*2 (a-z)
      character(len=*) string
      character*256 text
        integer*2 length

      call GETARG(num, text, length )
        if (length.gt.0) then
            string = text
        else
            length = 0
        endif
        rcpar = length
      return
      end function


Вот фрагмент подпрограммы, которая к ней обращается:

 
Код

     i = rcpar (1,opt)
     i = rcpar (2,opt)
     i = rcpar (3,str)


Из-за чего возникает проблема?

P.S. Если функцию вызывать из библиотеки все компилируется и работает.

PM MAIL   Вверх
FCM
Дата 19.10.2009, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



Где у тебя инструкция USE?

Какова структура модуля?
Должно быть

Код

MODULE M1
 CONTAINS
   INTEGER(2) FUNCTION RCPAR(...)
   ...
   END FUNCTION RCPAR
END MODULE M1


Это сообщение отредактировал(а) FCM - 19.10.2009, 15:25
PM MAIL   Вверх
MetalHeart
Дата 20.10.2009, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Сам модуль уже проверен, нормально вызывается в одной подпрограмме, а когда попробовал включить его в этой функции уже не хочет компилироваться.

Вот какая структура. 
1. (Главная программа вызывает подпрограмму  ELEPRD)
2.
    
Код

     subroutine ELEPRD

           use ELEPRDLIB
…

call myname ('eleprd','1.0 apr 2001')
if ( .not.ini_env (ihds,imod,nsys) ) then
...


(myname запускается из модуля, выполняется; по условию вызывается функция INI_ENV)

3.

Код

!DEC$ FREEFORM
 
      logical*4 function INI_ENV (ihds,imod,nsys)

            use ELEPRDLIB

      implicit none
      logical*4 put_ele
      integer*2 rcpar, ddbenv, strint, i, j, izer, ione, iuse, ihds, imod, nsys, nfil(10,2)
      integer*4 iios
      character str*256, opt*2
      parameter ( izer=0, ione=1, iuse=8 )

      include 'nxvlsm-n.inc'
      include 'nxvslz-n.inc'
      include 'nxvpar-n.inc'
      include 'ddbfil-c.inc'
      include 'elefil-c.inc'
      include 'ddbpth-c.inc'
      include 'eledat-c.inc'
      include 'elecom-c.inc'
      include 'elelle-c.inc'
      include 'eleopt-c.inc'

      data nfil /2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0/

      call runstr

      i = rcpar (1,opt)
      imod = strint (i,opt,'(i2)')
      i = rcpar (2,opt)
      ihds = strint (i,opt,'(i2)')
      i = rcpar (3,str)


Из модуля нормально вызывается подпрограмма runstr, но как только пытаюсь включить в модуль функцию rcpar появляется описанный выше конфликт.


Структура самого модуля вроде верная.


Это сообщение отредактировал(а) MetalHeart - 20.10.2009, 16:22
PM MAIL   Вверх
FCM
Дата 20.10.2009, 17:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



В INI_ENV
Цитата(MetalHeart @  20.10.2009,  16:12 Найти цитируемый пост)

Код

use ELEPRDLIB  ! Здесь есть определение rcpar
...
! Ниже повторное  "определение" rcpar
integer*2 rcpar, ddbenv, strint, i, j, izer, ione, iuse, ihds, imod, nsys, nfil(10,2)



Убери повторное "определение" rcpar . Если она описывается в модуле, то программная единица, использующая модуль знает о ней все. Ознакомься с понятиями явного и неявного интерфейса (прототипа) процедур.

В одной и той же области видимости не может быть более одного определения идентификатора.

Это сообщение отредактировал(а) FCM - 20.10.2009, 17:38
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Fortran | Следующая тема »


 




[ Время генерации скрипта: 0.0628 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.