Serg79, ну дык ты ж не так написал
ты написал без предварительного дефайна.
Оцени:
#if VALUE == ONE
и
#define VALUE one
#define ONE one
#if VALUE == ONE
Разница в восприятии человека - колоссальна.
Если в первом случае надо объяснять азы, что легче всегда направить к учебнику.
Во втором надо сказать о невозможности сравнения текста.
В любом случае, прошу прощенья за резкость.
Но и ты меня пойми, есть куча вопросов, большинство из которых "Как сделать" без единой попытки понять самому. Отсюда резкость в отношении к глупым копированиям кода из примеров в компилятор
В любом случае я не отрицаю правоты ЛогРуса - естественно дефайн подменяет в коде на значение, но я могу написать например так:
#define getvalue(a,b,c,d,e) \
( (a+b) / c + (d * e))
В результате в коде могу написать вызов:
int a = getvalue(x,y,z, log bol);
При дебагировании входа в код не будет. Это будет макрос, который сможет вычислять значение выражения.
Т.е. при заранее неизвестных значениях происходит замена не просто текстом, а подмена вычилением записи вызова.
И хоть значения неизвестны, вычисления будут проводится с заданными в рантайм значениями, а не с подменой нулем, как писалось ранее
В общем смотрите код читайте