- •Вбудовані функції. Мета застосування. Правила створення.
- •Препроцесор. Директива включення.
- •Препроцесор. Створення символічних констант та макросів.
- •Порівняльна характеристика макросів та вбудованих функцій.
- •Умовна компіляція програми. Директиви умовної компіляції. Приклади.
- •Поняття вказівника. Оголошення та ініціалізація. Мета використання.
- •Вирази та арифметичні дії над вказівниками.
- •Зв’язок масивів та вказівників. Обробка одновимірних масивів за допомогою вказівників. Приклади.
- •Вказівники. Вказівники як аргументи функцій та результати функцій.
- •Передача параметрів у функції за значенням та посиланням. Порівняльна характеристика.
- •Створення та обробка динамічних масивів. Видалення та вставка елементів у динамічний масив.
Порівняльна характеристика макросів та вбудованих функцій.
Як і функція макрос, має імя і параметри. Макрос , як і функцію викликають для його роботи. У виклику макроса задають фактичні параметри, так як типи параметрів для макроса не вказується, то процесор не виконує жодної перевірки на коректність типів параметрів.
Загальний синтаксис визначає макроси.
#define імя макросу(форм парам1, форм парам2…)
_тіло макроса
Імя макроса(форм пар1,фак пар2) Прив иклику макроса препроцесор замінює виклик макроса на тіло макроса, замінюючи при цьому форм парам на фактичний парам.
#define max(x,y) ((x)>(y)?(x):y))
#define MULT(x,y) x*y//поточ макрос
Int main() {int a=S, b=11 Cout<<MAX(a+1,b)<еndl;
//після обробки препроцесором рядок буде замінений на cout<<((a+1)>(b)?(a+1):(b))
Даний макрос max за принципом роботи схожий на функцію, яка повертає значення, адже тіло макроса є вираз. Cout<<MULT((a+1),b-2);//cout<<a+1*b-2<<endl;
Макрос розгорнувся у некоректний логічний вираз. Щоб виправити кожен аргумент макросу беремо в дужки. #define MULT(x,y) ((x)*(y))
Використання макросів призводить до збільшення коду програми, адже кожен виклик макроса препроцесором замінюється на тіло макроса.
За принципом роботи схожі на inline функції.
Вбудовані функції (inline) — це функції, чиє тіло підставляється в кожну точку виклику, замість того, щоб генерувати код виклику. Модифікатор inline перед вказівкою типу результату в оголошенні функції загадує компілятору згенерувати копію коду функції у відповідному місці, щоб уникнути виклику цієї функції. У результаті виходить множина копій коду функцій, вставлених у програму, замість єдиної копії, якою передається керування при кожному виклику функції. Модифікатор inline необхідно застосовувати для невеликих і часто використовуваних функцій. Наприклад,
#include <iostream.h> inline int min (int xl, int yl) {if(xl<yl) return (xl); Else return (yl); }void main() { int x, y, z; { cout« endl « "Введіть два цілих числа "; сіn » х » у; z = mіn(х, у); cout« endl « " Мінімальним з " « х « " і" « у « " є " « z;
}
Використання inline приводить до збільшення програми,але час роботи програми зменшується, адже не витрачається додатковий час для самого виклику функції і повертається назад у точку виклику/
Компілятор може ігнорувати модифікатор inline, якщо вбудований код надто великий, компілятор згенерує звичайний виклик функції.
Препроцесор. Макровизначення та макророзширення. \
Препроцесор — програма, що використовується для обробки початкового файла на нульовій фазі компіляції і замінює символічні абревіатури в програмі на відповідні директиви. Він відшукує інші файли, необхідні для виконання програми, і може змінити умови компіляції. Основна мета препроцесора — закінчити остаточний текст програми на С++. Потім остаточний текст програми зазнає компіляції. Директиви препроцесора — інструкції, записані в початковому тексті програми мовою C++ і призначені для виконання препроцесором мови C++. Препроцесор мови аналізує програму до компілятора і заміщує символічні абревіатури у програмі на відповідні директиви. Директиви препроцесора називають ще командними рядками, вони починаються зі спеціального знака #, що вміщується в першій позиції рядка. Директиви препроцесора дозволяють:
Основні терміни, пов'язані з даними, що обробляються макропроцесором: макровиклик (або макрокоманда), макровизначення, макророзширення.
Макровиклик, або макрокоманда, або макрос - це оператор програми, який підлягає обробці макропроцесором (макропроцесор обробляє не всі оператори, а тільки ті, що йому адресовані).
Макровизначення - це опис того, як повинна оброблятися макрокоманда. Макровизначення може знаходитися у тому ж початковому модулі, що й макрокоманда або у бібліотеці
макровизначень.
Макророзширення - це результат виконання макровиклику, за рахунок чого один або кілька операторів мови асемблера будуть підставлені у початковий модуль замість оператора макровиклику.
+6 питання
