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

Шпоры по С++

Как массивы, так и структуры могут быть элементами объединений, причем здесь возможны весьма разнообразные сочетания. При определении конкретных объединений разрешена их инициализация, причем инициализируется только первый элемент объединения.
union compound { long LONG;
int INT[2];
char CHAR[4]; };
compound mix1 = { 11111111 };// правильно
compound mix2 = { ‘a’, ‘b’, ‘c’, ‘d’ };// ошибка
union { char CHAR[4];
long LONG;
int INT[2] } mix = { ‘a’, ‘b’, ‘c’, ‘d’ };// правильно
При определении объединений без явного указания имени объединяющего типа (как в последнем примере для объединения mix) разрешено не вводить даже имени объединения. В этом случае создается анонимное или безымянное объединение: union { int INT[5]; char CH[10] } = { 1,2,3,4,5 };. К элементам анонимного объединения можно обращаться как и к отдельным объектам, но при этом могут изменяться другие элементы объединения:
INT[0] = 10; // изменятся значения CH[0], CH[1]
CH[9] = ‘a’; // изменится значение INT[4]
Разрешено формировать массивы объединений и инициализировать их: compound mixture[ ] = { 1L, 2L, 3L, 4L };
Здесь для каждого элемента mixture[i] введенного массива из четырех объединений типа compound инициализация выполнена для первого компонента объединения, то есть начальное значение, явно получил каждый элемент mixture[i].LONG. Доступ к внутренним кодам этих значений возможен также через элементы mixture[i].INT[j] и mixture[i].CHAR[k].

18 Стадии и команды препроцессорной обработки ( Замены в тексте)
В интегрированную среду подготовки программ на С++ или в компиляторе языка как обязательный компонент входит препроцессор. Назначение препроцессора — обработка исходного текста программы до ее компиляции.
Препроцессорная обработка включает несколько стадий, выполняемых последовательно. Конкретная реализация транслятора может объединить несколько стадий, но результат должен быть таким, как если бы они выполнялись последовательно:
— все системно-зависимые обозначения перекодируются в стандартные коды;
— каждая пара из символов ‘ \ ‘, и “конец строки” убираются, и тем самым следующая строка исходного файла присоединяется к строке, в которой находилась эта пара символов;
— в тексте распознаются директивы препроцессора, а каждый комментарий заменяется одним символом пустого промежутка;
— выполняются директивы препроцессора и производятся макроподстановки;
— ESC-последовательности в символьных константах и символьных строках, например , ‘ \ n ‘ заменяются на их эквиваленты (на соответствующие числовые коды);
— смежные символьные строки конкатенируются, т.е. соединяются в одну строку.
Для управления препроцессором, т.е. для задания нужных действий, используются команды(директивы)препроцессора, каждая из которых помещается на отдельной строке и начинается с символа #.
Стадия обработки директив препроцессора:
— замена идентификаторов (обозначений) заранее подготовленными последовательностями символов;

Страницы: 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

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