Скачать презентацию Дополнение 1 Встраиваемые функции inline вместо define Скачать презентацию Дополнение 1 Встраиваемые функции inline вместо define

л 17 0 дополнение2.pptx

  • Количество слайдов: 4

Дополнение 1 • Встраиваемые функции (inline вместо #define) Дополнение 1 • Встраиваемые функции (inline вместо #define)

Встраиваемые функции (модификатор inline) Альтернатива макросу #define. Зачем #define и inline? Сокращение накладных расходов Встраиваемые функции (модификатор inline) Альтернатива макросу #define. Зачем #define и inline? Сокращение накладных расходов при вызове «небольших» функций. Макрос = макрокоманда для препроцессора = литеральная подстановка Недостатки макроса #define: • Макрос – не функция! Нет локальных переменны, нет проверки типа параметров, невидима для отладчика. • Как правило, занимает одну строку. Могут использоваться многострочные #define, но там есть трудности. • Еще кое-что, вытекающее из предыдущих. В языке C++ введен модификатор функции inline. См. В. Штерн, с. 287 -289

#define n. Elements(a) (sizeof(a)/sizeof(a[0])) template <typename T> inline uns n. Elements(const T &arr); //**прототип #define n. Elements(a) (sizeof(a)/sizeof(a[0])) template inline uns n. Elements(const T &arr); //**прототип template //**определение inline uns n. Elements(const T &arr) { return (sizeof(arr)/sizeof(arr[0])); } ** Можно без шаблонов

Дополнительно Отметить в примере КР: Файловые потоки как параметры функций (процедур) + открытие файлов Дополнительно Отметить в примере КР: Файловые потоки как параметры функций (процедур) + открытие файлов в main, а не глобально