Главная » Статьи » Програмування » C [ Добавить статью ]

RUS Уроки по программированию на языке С (Определение констант с помощью #define.)

Определение констант с помощью #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 YES 1
в операторе
cout << "YES";
не будет сделано никакой макроподстановки.

Замены в тексте можно отменять с помощью команды:

#undef <имя>

После выполнения такой директивы имя для препроцессора становится неопределенным и его можно определять повторно. Например, не вызовут предупреждающих сообщений директивы:

#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 мы с вами также создавали макросы, когда изучали встраивание в уроке номер девять. Рекомендуем Вам вернуться к этому уроку и повторить пройденный материал.

Категория: C | Добавил: DEN-SHP (06.11.2012)
Просмотров: 880 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]