double arrow

Символические константы

Директивы препроцессора #define создают символические константы или макросы без параметров, обозначаемые идентификаторами, и макросы – операции, обозначаемые символьными строками. Формат директивы препроцессора #define при объявлении символической константы:

#define идентификатор_константы замещающий_текст

Если замещающий текст длинный, его можно перенести на следующую строку, введя символ обратного слеша “\”. Приведённая форма директивы создаёт макрос без параметров, называемый обычно символической константой. После появления этой строки в файле все встретившиеся в тексте программы имена, совпавшие с элементом директивы идентификатор_константы, будут автоматически заменены на указанный в директиве замещающий_текст прежде, чем начнётся компиляция программы. Например:

//определение строки текста#define Anyk “Нажмите любую клавишу”//определение числа#define WIDTH 80#define LENGTH (WIDTH+10)

Эти директивы изменят в тексте программы каждое слово WIDTH на число 80, а каждое слово LENGTH на выражение (80+10) вместе с окружающими его скобками.

Скобки, содержащиеся в макроопределении, позволяют избежать недоразумений, связанных с порядком вычисления операций. Например, при отсутствии скобок выражение t=LENGTH*7 будет преобразовано в выражение t=80+10*7, а не в выражение t=(80+10)*7, как это получается при наличии скобок, и в результате получится 780, а не 630.

Замена идентификатора константы не производится в комментариях и строках символов. Если замещающий текст в директиве не задан, то во всём тексте идентификаторы константы просто стираются.

Символические константы дают возможность присвоить константе имя и использовать его далее в программе. Если возникнет необходимость изменить значение константы во всей программе, для этого достаточно будет внести только одно изменение в директиву препроцессора #define и перекомпилировать программу; значение константы будет изменено по всей программе автоматически.

В С++ отдаётся предпочтение использованию именованных переменных типа const, а не символических констант. Константные переменные являются данными определённого типа и их имена видны отладчику. Если используется символическая константа, то после того, как она была заменена на соответствующий текст, только этот текст и будет виден отладчику. Преимуществом символической константы является то, что для хранения её значения не требуется дополнительной памяти.

Имеется ряд предопределенных символьных констант, предусмотренных стандартами на языки C и C++, в том числе:

_ _LINE_ _ - номер строки в исходном файле,_ _FILE_ _ - имя обрабатываемого файла,_ _DATE_ _ - дата начала обработки препроцессором,_ _TIME_ _ - время начала обработки,_ _STDC_ _ - программа должна соответствовать стандарту ANSI._ _cplusplus - компилировать программу в соответствии с синтаксисом С++,_ _PASCAL_ _ - последующие имена по умолчанию имеют тип “имя языка Pascal”

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: