реклама на сайте
подробности

 
 
> Последовательность вызова конструкторов, глобальных объектов при инициализации (ARM)
Andy Mozzhevilov
сообщение Sep 23 2010, 07:33
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Вопрос, можно ли как-то средствами расширения языка, а также параметрами и скриптами линкера (IAR ARM 5.xx) задать посделовательность инициализации (вызовов конструкторов) глобальных объектов?
То есть, например:
Код
class TSlon
{
....
};

class TMamont
{
....
};

TSlon    Slon;   // Этот объект должен быть инициализирован первым при запуске
TMamont  Mamont; // Этот объект должен быть инициализирован вторым при запуске



--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Dima_G
сообщение Sep 23 2010, 09:23
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



В свое время отказался от раздумий по очередности вызова конструкторов глобальных объектов.
Сейчас использую следующую схему:
1) Собственно сам конструктор
2) Этап Init()
3) Этам Run()

В самом конструкторе объект ведет себя изолированно от внешнего мира. Категорически не допускается взаимодействия с другими объектами (они у меня зачастую в другой единицы трансляции)
На этапе Init() происходит "налаживание связей" между объектами (обмен информацией, финальная инициализация и тд). На этапе Run() запускаются таски, включаются прерывания и тд.
Этапы Init и Run запускаются из main, что гарантирует создание глобальных объектов к этому моменту.

Код
///@function main()
///Main function
int main()
{
  * * *
  ClSystemService::Instance()->InitServices();
  ClSystemService::Instance()->RunServices();
  * * *
}


Либо возможен другой вариант: использование паттерна Singleton. Тогда обращение к объекту будет гарантировать его наличие smile.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 04:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01345 секунд с 7
ELECTRONIX ©2004-2016