Include <имя_файла> // имя в угловых скобках

Вопрос 10

Подготовка программы к исполнению (схема, основные этапы, реализация для С++)

Подготовка программы к исполнению

Include <имя_файла> // имя в угловых скобках - student2.ru

1. Подготовка текста. До выполнения программы необходимо подготовить ее текст в файле с расширением .cpp. (используется текстовый редактор языка Си++).

2. Препроцессорная обработка текста программы.

Назначение препроцессора – обработка исходного текста программы до ее компиляции.

Препроцессорная обработка в соответствии с требованиями стандарта языка Си++ включает несколько стадий, выполняемых последовательно. Конкретная реализация транслятора может объединять несколько стадий, но результат должен быть таким, как если бы они выполнялись последовательно:

· все системно-зависимые обозначения (например, системно-зависимый индикатор конца строки) перекодируются в стандартные коды;

· каждая пара символов ‘\’ и «конец строки» убираются, и тем самым следующая строка исходного файла присоединяется к строке, в которой находилась эта пара символов;

· в тексте распознаются директивы препроцессора, а каждый комментарий заменяется одним символом пустого промежутка;

· выполняются директивы препроцессора и производятся макроподстановки;

· ESC-последовательности в символьных константах и символьных строках, например, ‘\n’ заменяются на их эквиваленты (на соответствующие числовые коды);

· смежные символьные строки конкатенируются, т.е. соединяются в одну строку.

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

· замена идентификаторов (обозначений) заранее подготовленными последовательностями символов;

· включение в программу текстов из указанных файлов;

· исключение из программы отдельных частей ее текста (условная компиляция);

· макроподстановка, т.е. замена обозначения параметризованным текстом, формируемым препроцессором с учетом конкретных параметров (аргументов).

Для управления препроцессором, т.е. для задания нужных действий, используются команды (директивы) препроцессора, каждая из которых помещается на отдельной строке и начинается символом #.

Препроцессорные директивы:

#define, #include, #undef, #if, #ifdef, ifndef, #else, #endif, #elif, #line, #error, #pragma, #.

Директива #define.

Define идентификатор строка_замещения

Может размещаться в любом месте обрабатываемого текста, действие обычно распространяется от точки размещения до конца текста. В результате обработки все вхождения идентификатора, определенного командой #define, заменяется строкой замещения.

Если строка замещения оказалась слишком длинной, то ее можно продолжить в следующей строке текста программы, для этого в конце продолжаемой строки помещается символ ‘\’.

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

Undef идентификатор

Директиву #undefудобно использовать при разработке больших программ, когда они собираются из отдельных «кусков текста», написанных в разное время или разными программистами. В этом случае могут встретиться одинаковые обозначения разных объектов. Чтобы не изменять исходных файлов, включаемый текст можно «обрамлять» подходящими директивами #define – #undef и тем самым устранять возможные ошибки.

Директива #include.

include <имя_файла> // имя в угловых скобках

Наши рекомендации