Содержание
- 2. Директивы препроцессора Обработка исходных текстов программ компилятором в C++ выполняется в два этапа: препроцессорная обработка и
- 3. Директивы препроцессора (продолжение) Различают следующие директивы препроцессора: директивы компилятора #pragma, указывающие компилятору, как именно необходимо строить
- 4. Директива #include Различают следующие формы директивы #include #include #include ”имяфайла” Первый формат позволяет включить имя файла
- 5. Директива #define Директива #define позволяет описывать новые лексемы. Её формат: #define имя_лексемы [(параметры)] значение_лексемы В дальнейшем
- 6. Пример склейки строк для директивы #define #define va_arg(list, mode) \ *(((list).offset += ((int)sizeof(mode) + 7) &
- 7. Константы времени компиляции Определение лексем даёт возможность задать т.н. константы времени компиляции. Для таких констант не
- 8. Макросы Директива #define с параметрами называется макросом. Такие конструкции позволяют выполнить замещение лексем по-разному, в зависимости
- 9. Пример макроса #define max(x, y) ((x)>(y) ? (x) : (y)) Запись в исходном тексте программы cout
- 10. Пример неправильного макроса Обратите внимание, что параметры в теле макроса max взяты в скобки. Это сделано
- 11. Директивы #undef и defined Директива #undef имя_лексемы отменяет определение лексемы, заданное директивой #define. Наконец, директива defined(имя_лексемы)
- 12. Директивы условной компиляции Директивы условной компиляции дают возможность включить в исходный текст те или иные строки,
- 13. Проблема повторного определения Поскольку язык C/C++ допускает вложенное использование директивы #include, может возникнуть ситуация, когда программист,
- 14. Страж включения Необходимо организовать проверку повторного определения (написать страж включения) в файле ”a.h”: #ifndef _my_funcA_defined_ #define
- 15. Пространства имён Пространства имён (называемые также поименованными областями) служат для логического группирования объявлений и ограничения доступа
- 16. Пространства имён (продолжение) Если имя пространства имён не задано, компилятор определяет его самостоятельно с помощью уникального
- 17. Примеры пространств имён namespace NS1 { int i=1; int k=0; void f1(int); void f2(double); } …
- 18. Работа с пространствами имён Все программные объекты, описанные внутри некоторого пространства имен, становятся видимыми вне оператора
- 19. Оператор using Если имя часто используется вне своего пространства, его можно объявить доступным с помощью оператора
- 20. Приоритеты и конфликты имён Имена объявленные где-нибудь явно или с помощью оператора using, имеют приоритет перед
- 21. Пользовательские типы данных Программист может в дополнение к стандартным типам данных создавать свои собственные типы для
- 22. Оператор typedef С помощью оператора typedef можно присвоить новое имя уже созданному ранее типу. Неформальное описание
- 23. Примеры оператора typedef unsigned char byte; // byte – переменная типа unsigned char typedef unsigned char
- 24. Оператор enum При написании программ часто возникает потребность определить несколько именованных констант, для которых требуется, чтобы
- 25. Примеры оператора enum enum Err {NO_ERR, ERR_READ, ERR_WRITE, ERR_CONVERT}; Err error; … switch (error) { case
- 26. Оператор struct Структура – составной тип данных (подобно массиву). Однако элементы структуры (поля) могут иметь разные
- 28. Скачать презентацию