заголовки

Заголовки або підключається файл - в мовах програмування Сі та C ++ файлсодержащій визначення типів даних, структури, прототипи функцій, перерахування, макроси препроцесора. Має за замовчуванням розширення .h; іноді для заголовків файлів мови C ++ використовують розширення .hpp. Заголовки використовується шляхом включення його тексту в даний файл директивою препроцесора #include. Щоб уникнути повторного включення одного й того ж коду, використовуються директиви #ifndef, #define, #endif

Заголовки в загальному випадку може містити будь-які конструкції мови програмування, але на практиці виконуваний код (за винятком inline-функцій в C ++) в заголовні файли не поміщають. Наприклад, ідентифікатори, які повинні бути оголошені більш ніж в одному файлі, зручно описати в заголовки, а потім його підключати в міру потреби.

Основна мета використання заголовних файлів - винесення опису нестандартних [уточнити] типів і функцій за межі основного файлу з кодом. На цьому ж принципі побудовані бібліотеки: в заголовки перераховуються містяться в бібліотеці функції і використовувані нею структури / типи, при цьому вихідний текст бібліотеки може перебувати окремо від тексту програми, що використовує функції бібліотеки або взагалі бути недоступним.

Наприклад, за традицією, в заголовних файлах оголошують функції стандартної бібліотеки Сі і Сі ++.

Перевага заголовних файлів в першу чергу в спрощення компілятора: без заголовків файлів компілятор і компонувальник роблять одну і ту ж роботу, перевіряючи, чи є в модулі Y відкомпільоване функція X.

А недолік в тому, що заголовки набагато повільніше - щоб відкомпілювати 10 c-файлів, до кожного з яких підключений довгий h-файл, компілятору доведеться пройти по заголовку 10 разів. Щоб впоратися з цією проблемою, у багатьох компіляторах використовують попередньо відкомпілювалися заголовки.

Заголовки разом з деякими об'єктами мови C ++ (константи, inline-функції, шаблони, static-змінні) утворюють великовагові конструкції.

Якщо раптом програміст змінив c-файл, забувши зробити те саме з h-файлом, компонувальник видасть розпливчасте повідомлення про помилку без номера рядка. Особливо це помітно в C ++, де одна і та ж функція може мати різний набір аргументів, і перевірка на рівні компілятора не спрацьовує. Якщо програміст випадково залишить конструкцію в h-файлі незакінченої, помилка буде зовсім в іншому c- або h-файлі.