В исходной версии C, #define
был единственным доступным методом объявления постоянного значения.Это было сделано во время компиляции, а не во время выполнения: компилятор жестко закодировал значение для каждой инструкции.const
является функцией C ++ (позже добавленной в C ограниченным образом), а в C ++ рекомендуется использовать const, а не #define.const
переменные фактически существуют в памяти и могут быть инициализированы при создании во время выполнения.
#define
, однако, все еще часто используется в C ++, главным образом для связи с компилятором.Некоторые примеры:
Оболочки заголовка класса для предотвращения нескольких объявлений классов:
#ifdef VAL_H
#define VAL_H
// Define class header
#endif // VAL_H
Условная компиляция:
// Comment this line to disable debug output
#define DEBUG
// Some code
#ifdef DEBUG
// Only gets compiled if DEBUG is defined.
cerr << "Debug output here" << endl;
#endif