Tema_12_Срр.pptx
- Количество слайдов: 13
Директивою препроцесора називається рядок у вихідному коді, що має наступний формат: # ключве_слово параметри Список ключових слів: define - створення константи або макросу; undef - видалення константи або макросу; include - вставка вмісту вказаного файлу; if - перевірка істинності вираження; ifdef - перевірка існування константи або макросу; ifndef - перевірка не існування константи або макросу; else - гілка умовної компіляції при хибності вираження if; elif - перевірка істинності іншого виразу; коротка форма запису для комбінації else і if; endif - кінець гілки умовної компіляції; line - вказівка імені файлу і номера поточного рядка для компілятора; error - вивід повідомлення і зупинка компіляції; warning - вивід повідомлення без зупинки компіляції; pragma - вказівка дії, залежного від реалізації, для препроцесора або компілятора; якщо ключове слово не вказано, директива ігнорується; якщо вказано неіснуюче ключове слово, виводиться повідомлення про помилку і компіляція переривається.
Мова С++ Лекція 12 Макроси
Макроси Макрос – фрагмент коду, який виглядає як функція, але не є нею. Відмінності між макросом та функцією: • Макрос замінюється своїм визначенням під час роботи препроцесора і тому не викликає додаткових затрат часу на виклик. • Використання макросу приводить до розростання коду і збільшення програми • Компілятор не виконує ніяких перевірок типів у макросі • Неможливо оголосити вказівник на макрос або використати його адресу, оскільки макрос є засобом для вбудовування фрагмента коду. Імена макросів прийнято записувати великими буквами. 1
Звичайний макрос #define MAXN 1000 Функціональний макрос #define abs(x) ((x)>=0? (x): -(x)) #define max(a, b) ((a)>(b)? (a): (b)) Макрос з використанням вказівників #define m. Sum(p. Var 1, p. Var 2) ((*(p. Var 1)) + (*(p. Var 2))) 2
Приклади #include
#include
#include
• Правильно оформлений макрос: #define MACRO(x) printf(“%d”, x) • Неправильно оформлений макрос (лишній пробіл): #define MACRO (x) printf(“%d”, x) буде розкритий як: (x) printf(“%d”, x); • Якщо макрос розміщується в кількох рядках: #define WARN_IF(EXP) do { if (EXP) fprintf (stderr, "Warning: " #EXP "n"); } while (0) 6
Локальні змінні в макросах У макросах можна використовувати локальні змінні. Якщо ім'я такої локальної змінної співпаде з ім'ям глобальної, то глобальна змінна буде закрита локальною всередині макросу. Але присвоєння значень локальній змінній не вплине на глобальну. Приклад макросу: #include
Блоки в макросах У макросах можна застосовувати фігурні дужки, таким чином отримувати блок. #include
Макроси зі змінним числом параметрів Макроси в C можуть мати змінне число параметрів. Такі макроси називають variadic macros. #include
Запуск з макросу іншого макросу #include
Як за допомогою макросу перетворити об'єкт в рядок? #include


