![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
||
|
JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
Мне очень интересно, зачем константы которые занимают память, если есть макросы?
-------------------- |
|||
|
||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 1 Всего: 20 |
Тут недавно в подобной же теме все уже обьяснили, макросы тоже занимают память, глянь страницой 1-2 назад.
Добавлено @ 13:21 http://forum.vingrad.ru/index.php?showtopic=44313 |
|||
|
||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Память все равно занимают. Но кроме того, они не типизированы и их использование ведёт к ошибкам. --------------------
|
||||
|
|||||
Alastis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 15.11.2004 Где: Казахстан, Астана Репутация: 4 Всего: 10 |
Да, в больших проектах большое кол-во дефайнов чревато... хотя иногда это помогает сделать код красивым и понятным... для себя
![]() -------------------- Прости, что я говорю, когда ты меня перебиваешь. |
|||
|
||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Голосование составленно по дурацки.
Использование const и #define нужно не противопоставлять друг-другу, а использовать совместно так, как это для проекта удобнее. |
|||
|
||||
pablo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 12.2.2005 Где: Вильнюс, Литва Репутация: 4 Всего: 6 |
Ребята давайте подумаем логически.
Если можно было бы обойтись без констант, только макросами, так зачем же их ввели ? Ответ прост. Потому что макросы встраиваются в код препроцессором, повышают вероятность ошибок который очень тяжело находить. -------------------- Первый блин всегда похож на сферу, иногда бывает и куб. |
|||
|
||||
S.A.P. |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
Не вижу смысла использовать const.
Добавлено @ 17:27
#define OUR_FLOAT (float)86,236 Добавлено @ 17:28 Современные компиляторы достаточно хорошо оптимизируют дефайны, и тот топ тому подтверждение. Добавлено @ 17:29
|
||||
|
|||||
Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
А счего ты взял, что они занимают память? Это тоже самое, что и макросы, только для них, в отличие от макроса определён тип, а это хорошо. Вообще в современном с++ можно спокойно обойтись без макросов, для того всё и делается. Вообще с точки зрения призводительности и памяти отличий макросов от констант и инлайноских функций нет. А вот в с точки зрения хорошего и безопасного кода макросы уже давно не канают. |
|||
|
||||
S.A.P. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
|
|||
|
||||
Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
В том что это не переменная, ни функция, простая глупая подстановка текста, которая не имеет ни типа, ни нормальных параметров. Макросы вообще плохо вписываются в парадигмы языков программирования. Кстати, кто-нибудь может привести пример, на С++, более выгодного использования макросов в сравнении с константами и инлайновскими функциями? Это сообщение отредактировал(а) Олег М - 28.3.2005, 18:21 |
|||
|
||||
JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
А почему во всех Header файах используют макросы?
Да ещо как занимают.(помню чото в книге писалось про яейки памяти и Read Only). - A что хорошего в сonst "определён тип"? - Только путоница. ![]() Это сообщение отредактировал(а) JAnty - 28.3.2005, 18:45 -------------------- |
|||
|
||||
chipset |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Хм.
Представьте вполне легальное обьявление:
Теперь на секунду представьте, что какой-то крутой праграмер, написал:
![]() Это сообщение отредактировал(а) chipset - 28.3.2005, 21:13 --------------------
|
||||||
|
|||||||
S.A.P. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
Если сравнивать константные объявления #define и const, то основное различие в том, что дефайн должен быть уникальным во всей программе, т.к. не чувствителен к пространствам имен. const в этом плане гораздо гибче, но иногда удобнее воспользоваться дефайном.
Ну а сравнивать дефайн и inline функции ИМХО глупо. 2 совершенно разные вещи. |
|||
|
||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Пример в студию! --------------------
|
||||
|
|||||
S.A.P. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |