Читать «C++: базовый курс» онлайн - страница 327
Herbert Schildt
Препроцессор C++ включает следующие директивы.
Как видите, все директивы препроцессора начинаются с символа
На заметку.
Директива
Директива
#define макроимя последовательность_символов
Обратите внимание на то, что здесь нет точки с запятой. Заданная
Итак, после включения этой директивы каждое вхождение текстового фрагмента, определенное как
#define UP 1
#define DOWN 0
Данные директивы вынудят компилятор подставлять
cout << UP << ' ' << DOWN << ' ' << UP + UP;
На экран будет выведено следующее:
1 0 2
После определения имени макроса его можно использовать как часть определения других макроимен. Например, следующий код определяет имена
#define ONE 1
#define TWO ONE+ONE
#define THREE ONE+TWO
Важно понимать, что
#define GETFILE "Введите имя файла"
// ...
Препроцессор заменит строкой
cout << GETFILE;
в действительности выглядит так.
cout << "Введите имя файла";
Никакой текстовой замены не произойдет, если идентификатор находится в строке, заключенной в кавычки. Например, при выполнении следующего кода
#define GETFILE "Введите имя файла"
// ...
cout << "GETFILE - это макроимя\n";
на экране будет отображена эта информация
GETFILE - это макроимя,
а не эта:
Введите имя файла - это макроимя
Если текстовая последовательность не помещается на строке, ее можно продолжить на следующей, поставив обратную косую черту в конце строки, как показано в этом примере.
#define LONG_STRING "Это очень длинная последовательность,\