Определение констант с помощью #define.Оператор #define часто используют для определения символических констант. Он может появиться в любом месте исходного файла, а даваемое им определение имеет силу, начиная с места появления и до конца файла. Примечание: В конце определения символической константы (в конце оператора #define) точка с запятой не ставится! Пример 1.# define min 1
# define max 100
|
В тексте программы вместо констант 1 и 100 можно использовать соответственно min и max. Пример 2.#include <iostream>
using namespace std;
#define NAME "Vasya Pupkin."
void main ()
{
cout << " My name is " << NAME;
}
Результат работы:
My name is Vasya Pupkin.
|
Примечание: Текст внутри строк, символьные константы и комментарии не подлежат замене, т.к. строки и символьные константы являются неделимыми лексемами языка C. Так что, после макроопределенияв операторене будет сделано никакой макроподстановки. Замены в тексте можно отменять с помощью команды: После выполнения такой директивы имя для препроцессора становится неопределенным и его можно определять повторно. Например, не вызовут предупреждающих сообщений директивы: #define M 16
#undef M
#define M 'C'
#undef M
#define M "C"
|
Директиву #undef удобно использовать при разработке больших программ, когда они собираются из отдельных "кусков текста", написанных в разное время или разными программистами. В этом случае могут встретиться одинаковые обозначения разных объектов. Чтобы не изменять исходных файлов, включаемый текст можно "обрамлять" подходящими директивами #define - #undef и тем самым устранять возможные ошибки. Например: . . . . .
A = 10; //Основной текст.
. . . . .
#define A X
. . . . .
A = 5; //Включенный текст.
. . . . .
#undef A
. . . . .
B = A; //Основной текст.
. . . . .
|
При выполнении программы B примет значение 10, несмотря на наличие оператора присваивания A=5; во включенном тексте. Если строка_лексем оказывается слишком длинной, то ее можно продолжить в следующей строке текста программы. Для этого в конце продолжаемой строки помещается символ "\". В ходе одной из стадий препроцессорной обработки этот символ вместе с последующим символом конца строки будет удален из программы. Например: #define STROKA "\n Multum, non multa - \
mnogoe, no nemnogo!"
. . . . .
cout << STROKA;
. . . . .
На экран будет выведено:
Multum, non multa - mnogoe, no nemnogo!
|
Напоминаем вам, что с помощью директивы #define мы с вами также создавали макросы, когда изучали встраивание в уроке номер девять. Рекомендуем Вам вернуться к этому уроку и повторить пройденный материал.
|