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