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

 
 
> Объекты в C++
spongebob
сообщение Dec 21 2010, 18:06
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 126
Регистрация: 14-11-10
Пользователь №: 60 879



Всем привет!

Подскажите, пожалуйста, в каком порядке создаются глобальные объекты программы (экземпляры классов и переменные простых типов)?
В том, в котором они перечислены при объявлении?
Компилятор WinAVR.
Имеет ли значение вид компилятора C++?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
spongebob
сообщение Dec 21 2010, 19:44
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 126
Регистрация: 14-11-10
Пользователь №: 60 879



Фактически, ситуация следующая (возможно, посоветуете что-нибудь лучше).
Допустим, в проекте есть несколько глобальных переменных, которые используются в нескольких модулях.
Мы преследуем две цели: задать порядок создания и облегчить включение глобальных переменных в несколько модулей.
Создаем "x.cpp", в котором определяем все наши глобальные объекты, в файле "x.hpp" объявляем все эти объекты, используя директиву "extern". Далее инклудим файл "x.hpp" в нужные нам .cpp.

Цитата
Но все это нестандандартно и от лукавого


Понимаю теперь, будем от этого уходить sm.gif
Go to the top of the page
 
+Quote Post
dxp
сообщение Dec 22 2010, 01:54
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(spongebob @ Dec 22 2010, 04:44) *
Фактически, ситуация следующая (возможно, посоветуете что-нибудь лучше).
Допустим, в проекте есть несколько глобальных переменных, которые используются в нескольких модулях.
Мы преследуем две цели: задать порядок создания и облегчить включение глобальных переменных в несколько модулей.
Создаем "x.cpp", в котором определяем все наши глобальные объекты, в файле "x.hpp" объявляем все эти объекты, используя директиву "extern". Далее инклудим файл "x.hpp" в нужные нам .cpp.

Да, для одной единицы трансляции гарантируется порядок создания объектов. Если зависимые объекты размещать в одной единице трансляции, то проблем нет. В противном случае надо применять разного рода трюки - например, уже не раз тут (на форуме) упоминавшийся singleton.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post



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

 


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


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