Понедельник, Июль 5th, 2010

Шпоры по С++

— включение в программу текстов из указанных файлов;
— исключение из программы отдельных частей ее текста (условная компиляция);
-макроподстановка, т.е. замена обозначения параметризованным текстом, формируемым препроцессором с учетом конкретных параметров (аргументов).
Замены в тексте
Для замены идентификатора заранее подготовленной последовательности символов используется директива
#define идентификатор строка_замещения
Директива может размещаться в любом месте обрабатываемого текста, а ее действия в обычном случае распространяется от точки размещения до конца текста. Директива, во-первых, определяет идентификатор как процессорный. В результате обработки все вхождения определенного командой #define идентификатора в текст программы заменяются строкой замещения, окончанием которой обычно служит признак конца той строки, где размещена команда #define. Символы пробелов, помещенные в начале и в конце строки замещения, в подстановке не используются. Например:
#define begin {
#define end }
В данном случае в качестве операторных скобок используются идентификаторы begin, end. Компилятор языка С++ не может обрабатывать таких скобок, и поэтому до компиляции процессор заменяет все вхождения этих идентификаторов стандартными скобками { и }. Соответствующие указания даны процессору с помощью директив #define.
Если строка_замещения оказывается слишком длинной, то, как любую символьную строку С++, ее можно продолжить в следующей строке текста программы. Для этого в конце продолжаемой строки помещается символ ‘\‘. В ходе одной из стадий препроцессорной обработки этот символ вместе с последующим символом конца строки будет удален из текста программы.
#define STROKA » \ n Multum, non multa — \
многое, но немного!»
. . .
cout << STROKA; На экране будет выведено: Multum, non multa – многое, но не много! Предусмотренные директивой #define препроцессорные замены не выполняются внутри строк, символьных констант и комментариев, то есть не распространяются на тексты, ограниченные кавычками ("), апострофами (‘) и разделителями (/*, */). В тоже время строка замещения может содержать перечисленные ограничители. Если в программе нужно часто печатать или выводить на экран дисплея значение какой-либо переменной и, кроме того, снабжать эту печать одним и тем же пояснительным текстом, то удобно ввести сокращенное обозначение оператора печати. Например, так: #define PK cout << " \ n Номер элемента N = " << N << ‘.’ После этой директивы использование в программе оператора РК; будет эквивалентно (по результату) оператору из строки замещения. Замены в тексте можно отменять с помощью команды: #undef идентификатор После выполнения такой директивы идентификатор для препроцессора становится неопределенным и его можно определять повторно. Директиву #undef удобно использовать при разработке больших программ, когда они собираются из отдельных "кусков текста", написанных в разное время или разными программистами.

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Категория: Шпоры