Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Константы 
:(
    Опции темы
 
Как вы создаёте константы ?
#define [ 7 ]  [38.89%]
const [ 9 ]  [50.00%]
не создаю вообще(обойдусь). [ 2 ]  [11.11%]
Всего проголосовавших: 18
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
JAnty
Дата 28.3.2005, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

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



Мне очень интересно, зачем константы которые занимают память, если есть макросы?


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
En_t_end
Дата 28.3.2005, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Тут недавно в подобной же теме все уже обьяснили, макросы тоже занимают память, глянь страницой 1-2 назад.
Добавлено @ 13:21
http://forum.vingrad.ru/index.php?showtopic=44313

PM MAIL ICQ Skype GTalk Jabber   Вверх
chipset
Дата 28.3.2005, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Цитата(JAnty @ 28.3.2005, 02:04)
Мне очень интересно, зачем константы которые занимают память, если есть макросы?

Память все равно занимают.
Но кроме того, они не типизированы и их использование ведёт к ошибкам.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Alastis
Дата 28.3.2005, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 15.11.2004
Где: Казахстан, Астана

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



Да, в больших проектах большое кол-во дефайнов чревато... хотя иногда это помогает сделать код красивым и понятным... для себяsmile


--------------------
Прости, что я говорю, когда ты меня перебиваешь.
PM MAIL WWW ICQ   Вверх
DENNN
Дата 28.3.2005, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

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



Голосование составленно по дурацки.
Использование const и #define нужно не противопоставлять друг-другу, а использовать совместно так, как это для проекта удобнее.
PM ICQ   Вверх
pablo
Дата 28.3.2005, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

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



Ребята давайте подумаем логически.
Если можно было бы обойтись без констант, только макросами, так зачем же их ввели ?
Ответ прост.
Потому что макросы встраиваются в код препроцессором,
повышают вероятность ошибок который очень тяжело находить.



--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
S.A.P.
Дата 28.3.2005, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Не вижу смысла использовать const.
Добавлено @ 17:27
Цитата(chipset @ 28.3.2005, 13:29)
кроме того, они не типизированы
можно сдалеть типизированный дефайн

#define OUR_FLOAT (float)86,236
Добавлено @ 17:28
Современные компиляторы достаточно хорошо оптимизируют дефайны, и тот топ тому подтверждение.
Добавлено @ 17:29
Цитата(oleg1973 @ 28.3.2005, 17:25)
единственное отличие что при define данная строка , если она не используется нигде в программе, не будет включена в файл при компиляции

значит define круче


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

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



Цитата(JAnty @ 28.3.2005, 13:04)
Мне очень интересно, зачем константы которые занимают память, если есть макросы?

А счего ты взял, что они занимают память? Это тоже самое, что и макросы, только для них, в отличие от макроса определён тип, а это хорошо.
Вообще в современном с++ можно спокойно обойтись без макросов, для того всё и делается.

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


PM MAIL ICQ   Вверх
S.A.P.
Дата 28.3.2005, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата
А вот в с точки зрения хорошего и безопасного кода макросы уже давно не канают
и в чем же заключается нехорошесть и опасность макросов?



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


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

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



Цитата(Perchilla @ 28.3.2005, 18:12)
и в чем же заключается нехорошесть и опасность макросов?

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

Кстати, кто-нибудь может привести пример, на С++, более выгодного использования макросов в сравнении с константами и инлайновскими функциями?

Это сообщение отредактировал(а) Олег М - 28.3.2005, 18:21
PM MAIL ICQ   Вверх
JAnty
Дата 28.3.2005, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

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



А почему во всех Header файах используют макросы?


Цитата
А счего ты взял, что они занимают память? Это тоже самое, что и макросы, только для них, в отличие от макроса определён тип, а это хорошо.


Да ещо как занимают.(помню чото в книге писалось про яейки памяти и Read Only).

- A что хорошего в сonst "определён тип"?
- Только путоница. smile

Это сообщение отредактировал(а) JAnty - 28.3.2005, 18:45


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
chipset
Дата 28.3.2005, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Хм.
Представьте вполне легальное обьявление:
Код

int abc = 3;

Теперь на секунду представьте, что какой-то крутой праграмер, написал:
Код

#define abc 1;
smile

Это сообщение отредактировал(а) chipset - 28.3.2005, 21:13


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
S.A.P.
Дата 28.3.2005, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Если сравнивать константные объявления #define и const, то основное различие в том, что дефайн должен быть уникальным во всей программе, т.к. не чувствителен к пространствам имен. const в этом плане гораздо гибче, но иногда удобнее воспользоваться дефайном.

Ну а сравнивать дефайн и inline функции ИМХО глупо. 2 совершенно разные вещи.
PM MAIL   Вверх
chipset
Дата 28.3.2005, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Цитата(Perchilla @ 28.3.2005, 11:42)
иногда удобнее воспользоваться дефайном.

Пример в студию!


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
S.A.P.
Дата 29.3.2005, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(chipset @ 28.3.2005, 22:47)
Пример в студию!
например, когда мы точно не знаем, будет ли константа из подключаемого модуля задействована в нашей программе.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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