Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 20.07.2009, 22:33   #1
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 147
По умолчанию #define

Зраствуйте, объясните пожалуйста что такое #define и отличается ли он от обычной константы.
Заранее спасибо.
JOFRIF вне форума   Ответить с цитированием
Старый 20.07.2009, 23:01   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

http://www.tdoc.ru/c/programming/cpp...ay-page71.html
http://msdn.microsoft.com/en-us/libr...93(VS.80).aspx

книжечки почитывать надо...
counter вне форума   Ответить с цитированием
Старый 20.07.2009, 23:18   #3
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 147
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
Спасибо за ссылки , а насчет книжечек то в той книге по которой учусь не объясняется чем дефайн отл ичается от константы.
JOFRIF вне форума   Ответить с цитированием
Старый 20.07.2009, 23:27   #4
pproger
C++ hater
СуперМодератор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,328
По умолчанию

2JOFRIF тем же, чем и пирожное от мороженого, вроде и то и то еда, и то, и то десерт.
дефайны обрабатываются препроцессором, т.е в полученном коде их не будет, будут лишь их подстановки, в то время как константы - реальные переменные, занимающие память и тп. да, возможно ГЛОБАЛЬНЫЕ константы и директива define чем то похожи (делают "одно и то же"), но константы можно использовать как параметры функций например. с помощью этой директивы легко писать кроссплатформенный код, узнавать о уже включенном заголовочном файле, переопределить ЛЮБОЙ оператор своим (например { на begin, а } на end если ты поклонник садо-мазо).
pproger вне форума   Ответить с цитированием
Старый 20.07.2009, 23:29   #5
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,525
По умолчанию

Константа не умеет так
Код:
#define MAX(a, b) a < b ? b : a
psycho-coder вне форума   Ответить с цитированием
Старый 20.07.2009, 23:35   #6
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Ещё константа не умеет так:
Код:
#define q 2+2
int main()
{
  int w = q * 2; // q = ?
}
Поэтому с дефайном надо осторожнее.
Somebody вне форума   Ответить с цитированием
Старый 20.07.2009, 23:54   #7
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 147
По умолчанию

Теперь более менее понятно, спасибо всем.
JOFRIF вне форума   Ответить с цитированием
Старый 21.07.2009, 18:26   #8
ASME0010
Новичок
Джуниор
 
Регистрация: 21.07.2009
Сообщений: 3
По умолчанию

зато у константы нет возможности потери информации при компилировании,а у #define имеется такой минус!!!!
ASME0010 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
#define DEBUG Revenholm Общие вопросы C/C++ 1 01.05.2009 19:52


11:46.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.