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

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

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

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

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

Зраствуйте, объясните пожалуйста что такое #define и отличается ли он от обычной константы.
Заранее спасибо.
JOFRIF вне форума Ответить с цитированием
Старый 20.07.2009, 22: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, 22:18   #3
JOFRIF
Форумчанин
 
Регистрация: 20.04.2008
Сообщений: 162
По умолчанию

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

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

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

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

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

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

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

Опции темы


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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS