Заголовки - це
Заголовки (іноді головний файл. Англ. Header file), або підключається файл - в мовах програмування файл, механічно «вставляється» компілятором в вихідний текст в тому місці, де розташовується деяка директива (в Паскалі. #include
У мовах програмування Сі та C ++. заголовки - основний спосіб підключити до програми типи даних. структури, прототипи функцій. Рахункова типи. і макроси. використовувані в іншому модулі. Має за замовчуванням розширення .h; іноді для заголовків файлів мови C ++ використовують розширення .hpp. Щоб уникнути повторного включення одного й того ж коду, використовуються директиви #ifndef, #define, #endif. Заголовки в загальному випадку може містити будь-які конструкції мови програмування, але на практиці виконуваний код (за винятком inline-функцій в C ++) в заголовні файли не поміщають. Наприклад, ідентифікатори, які повинні бути оголошені більш ніж в одному файлі, зручно описати в заголовки, а потім його підключати в міру потреби. Подібним же чином працює модульність і в більшості ассемблеров.
За традицією, що склалася, в заголовних файлах оголошують функції стандартної бібліотеки Сі і Сі ++.
В інших мовах (наприклад, в Паскалі) застосовується розвинена система модулів. Але і в них заголовки мають певну цінність. Справа в тому, що два файли (основний і заголовки) зливаються в одну одиницю трансляції. і тому заголовки може містити директиви препроцесора, незакінчені синтаксичні конструкції.
призначення
У сучасних мовах програмування програми складаються з модулів, компільованих окремо. У зв'язку з цим виникає питання: як вказати, що підпрограма або змінна X визначена в модулі Y. Для цього існує кілька рішень, в Сі застосовано таке.
В одній з одиниць компіляції (тобто з-файл) описується функція, наприклад:
Щоб на неї можна було посилатися з інших одиниць компіляції, потрібно оголосити її за допомогою прототипу функції. тобто:
Списки ініціалізованих констант в заголовки вибираються препроцесором для заміни їх значенням цих констант у включається файлі. Включаються функції заголовки обрамляются директивами макрозащіти препроцесора для уникнення їх дублювання в включає файлі (виникнення такої ситуації можливо при класовому або файловому спадкуванні):
Крім конструкції #ifndef - #endif іноді застосовується нестандартна #pragma once:
Порівняння з прямим отриманням заголовків з відкомпільованого модуля
Альтернатива заголовним файлів - отримання інформації про оголошені типах, функціях і т. Д. Безпосередньо з відкомпільованого модуля. Так надходять мови Паскаль. Java та інші.
переваги
Перевага заголовних файлів в першу чергу в спрощення компілятора: без заголовків файлів компілятор і компонувальник роблять одну і ту ж роботу, перевіряючи, чи є в модулі Y відкомпільоване функція X.
Якщо модуль правильно написаний, за допомогою умовної компіляції можна відключити частину його функціональності. Наприклад, в даному випадку ми відмовляємося від прікомпоновиванія до програми величезної бібліотеки STL:
У разі, якщо модуль поширюється вже відкомпільоване, заголовки буде одночасно документацією по користуванню модулем.
Якщо програміст виправив реалізацію функції в c-файл, не чіпаючи заголовка, це не викличе каскадної збиранню всіх модулів, які використовують даний заголовок.
Заголовки дозволяє задати те, що неможливо поставити за допомогою модулів - підстановки за допомогою #define. директиви компілятора, незакінчені синтаксичні конструкції ...
недоліки
Заголовки набагато повільніше - щоб відкомпілювати 10 c-файлів, до кожного з яких підключений довгий h-файл, компілятору доведеться пройти по заголовку 10 разів. Щоб впоратися з цією проблемою, у багатьох компіляторах використовують попередньо відкомпілювалися заголовки.
Заголовки разом з деякими об'єктами мови C ++ (константи. Inline-функції, шаблони. Static -змінного) утворюють великовагові конструкції.
Якщо раптом програміст змінив c-файл, забувши зробити те саме з h-файл, компонувальник видасть розпливчасте повідомлення про помилку без номера рядка. Особливо це помітно в C ++. де одна і та ж функція може мати різний набір аргументів. і перевірка на рівні компілятора не спрацьовує. Якщо програміст випадково залишить конструкцію в h-файл незакінченої, помилка буде зовсім в іншому c - або h-файл.
У деяких мовах (наприклад, Java) взагалі не потрібно змінювати код одночасно в двох місцях.
література
Дивитися що таке "Заголовний файл" в інших словниках:
Файл заголовків - Заголовний файл (іноді головний файл, англ. Header file) (або підключається файл) в мовах програмування Сі та C ++ файл, який містить визначення типів даних, структури, прототипи функцій, перерахування, макроси препроцесора. Має по ... ... Вікіпедія
Файл (комп'ютер) - Файл (англ. File папка, швидкозшивач) концепція в обчислювальній техніці: сутність, що дозволяє отримати доступ до якогось ресурсу обчислювальної системи і володіє рядом ознак: фіксоване ім'я (послідовність символів, число або ... Вікіпедія
Файл - Цей термін має також інші значення див. Файл (значення). Файл (англ. File) блок інформації на зовнішньому пристрої, що запам'ятовує комп'ютера, який має певний логічне представлення (починаючи від простої послідовності ... ... Вікіпедія
Комп'ютерний файл - Файл (англ. File папка, швидкозшивач) концепція в обчислювальній техніці: сутність, що дозволяє отримати доступ до якогось ресурсу обчислювальної системи і володіє рядом ознак: фіксоване ім'я (послідовність символів, число або ... Вікіпедія
Файли - Файл (англ. File папка, швидкозшивач) концепція в обчислювальній техніці: сутність, що дозволяє отримати доступ до якогось ресурсу обчислювальної системи і володіє рядом ознак: фіксоване ім'я (послідовність символів, число або ... Вікіпедія
Препроцесор Сі - препроцесор С / С ++ програмний інструмент, що змінює код програми для подальшої компіляції і збірки, який використовується в мовах програмування Сі та його нащадка C ++. Цей препроцесор забезпечує використання стандартного набору ... ... Вікіпедія
stdint.h - Стандартна бібліотека мови програмування С assert.h complex.h ctype.h errno.h fenv.h float.h inttypes.h iso646.h limits.h locale.h math.h setjmp.h signal.h stdarg. h stdbool.h stddef.h stdint ... Вікіпедія
errno.h - Стандартна бібліотека мови програмування С assert.h complex.h ctype.h errno.h fenv.h float.h inttypes.h iso646.h limits.h locale.h math.h setjmp.h signal.h stdarg. h stdbool.h stddef.h ... Вікіпедія
Stdio.h - Стандартна бібліотека мови програмування С assert.h complex.h ctype.h errno.h fenv.h float.h inttypes.h iso646.h limits.h locale.h math.h setjmp.h signal.h stdarg. h stdbool.h stddef.h stdint.h stdio.h stdlib.h ... Вікіпедія
stdio.h - Стандартна бібліотека мови програмування С assert.h complex.h ctype.h errno.h fenv.h float.h inttypes.h iso646.h limits.h locale.h math.h setjmp.h signal.h stdarg. h stdbool.h stddef.h ... Вікіпедія
- Заголовки. Джессі Рассел. Ця книга буде виготовлена в відповідності з Вашим замовленням за технологією Print-on-Demand. High Quality Content by WIKIPEDIA articles! Заголовки (іноді головний файл, англ. Header ... Детальніше Купити за 1125 руб