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

      Комментарии к записи Include имя_файла // имя в угловых скобках отключены

Вопрос 10

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

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

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

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

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

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

  • все системно-зависимые обозначения (например, системно-зависимый индикатор конца строки) перекодируются в стандартные коды;
  • каждая пара символов ‘\’ и «конец строки» убираются, и тем самым следующая строка исходного файла присоединяется к строке, в которой находилась эта пара символов;
  • в тексте распознаются директивы препроцессора, а каждый комментарий заменяется одним символом пустого промежутка;
  • выполняются директивы препроцессора и производятся макроподстановки;
  • ESC-последовательности в символьных константах и символьных строках, например, ‘\n’ заменяются на их эквиваленты (на соответствующие числовые коды);
  • смежные символьные строки конкатенируются, т.е. соединяются в одну строку.

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

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

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

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

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

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

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

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

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

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

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

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

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

include// имя в угловых скобках

What is the difference between quotes and brackets with #include?