![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
||
|
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Так тогда наоборот, у вас есть возможность определить собственную константу с таким-же именем, если я правильно понял. ... Дело в том, что С++, как язык поддерживающий ООП в довольно-таки полной мере, применяет все vtnjls чтобы заставить людей мыслить обьектно-ориентированно. К примеру, существуют такие вещи как модификаторы private, public, protected; namespace'ы, защищенное наследование и т.д.. Это всё сделано, чтобы граммотный разработчик имел возможность контроллировать области видимости и реализовывать инкапсуляцию, при которой обьект представляет собой черный ящик. Будет весьма прикольно если какой то static обьект, предназначенный для namespace'а A, за непонятным хреном влезет в мой неймспейс B что случается при использовании абсолютно неконтроллируемого, пережитка Сишного прошлого - #define. Невозможно никакое граммотное разделение кода на модули и классы при введении вышеупомянутого анахронизма. Это вполне применимо при маленьких проектах, тыща-две строк, но при отладке реальных программ это становится настоящей пыткой, и я был рад что в C# эта хренотень исчезла. Это сообщение отредактировал(а) chipset - 29.3.2005, 08:27 --------------------
|
||||
|
|||||
S.A.P. |
|
||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
простой пример
2 константы: одна объявлена через define, вторая через const, обе не задействованы в программе. Смотрим ассемблерный код
как видишь компилятор пропустил define, а const остался в памяти. А теперь представь, что было бы, если все стандртные костантные значения (например WM_TIMER) были бы определены в через const.
![]() Это сообщение отредактировал(а) Perchilla - 29.3.2005, 08:33 |
||||||||
|
|||||||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Когда я добавил ещё одну константу но не заюзал её, код не изменился. --------------------
|
||||
|
|||||
Олег М |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
А как ты компилил и на чём?
![]() Это сообщение отредактировал(а) Олег М - 29.3.2005, 08:54 |
||||
|
|||||
S.A.P. |
|
||||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
А попробуй - ка сделать ее не глобальной.
и посмотри дизасмом. Память по любому будет выделяться. Юзаешь ты ее или нет. Дефайн я в любом месте объявлю и он будет глобальный и память выделяться не будет, если я его не использую. Дело вкуса. ![]() и наконец твой код. Попробуй вместо const int j = 10; записать const double j = 10; ![]()
Добавлено @ 13:18 Олег М есть еще одно применение #define. Из WINDOWSX
юзаем
Удобно? Как такое инлайновыми функциями сделать? Что не говорите, но #define жил, живет и будет жить. Во всяком случае в C++. Это сообщение отредактировал(а) Perchilla - 29.3.2005, 13:29 |
||||||||||
|
|||||||||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
А никто и не спорит ![]() |
|||
|
||||
Олег М |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
![]()
Покажи, что у тебя в дизасме получается (есть подозрение, что ты в дебаге компилишь). Лично у меня вот что
Где тут подо что память выделяется? непонятно |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |