Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2009, 22:33   #1
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию #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
Сообщений: 164
По умолчанию

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

2JOFRIF тем же, чем и пирожное от мороженого, вроде и то и то еда, и то, и то десерт.
дефайны обрабатываются препроцессором, т.е в полученном коде их не будет, будут лишь их подстановки, в то время как константы - реальные переменные, занимающие память и тп. да, возможно ГЛОБАЛЬНЫЕ константы и директива define чем то похожи (делают "одно и то же"), но константы можно использовать как параметры функций например. с помощью этой директивы легко писать кроссплатформенный код, узнавать о уже включенном заголовочном файле, переопределить ЛЮБОЙ оператор своим (например { на begin, а } на end если ты поклонник садо-мазо).
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 20.07.2009, 23:29   #5
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Константа не умеет так
Код:
#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
Сообщений: 164
По умолчанию

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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