реклама на сайте
подробности

 
 
> include в хидере - всё таки это доро или зло?, Есть противоположные мнения, хочется понять их
Cosmojam
сообщение Oct 10 2013, 22:00
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182



Речь идёт про Си. Си++ не трогаем, хотя догадываюсь что аргументы там те же.

Существует мнение что писать в .h все необходимые инклюды - это плохо. Единственное подтверждение почему это плохо что мне удалось найти - время компиляции увеличивается. Многократные инклюды одного хидера лечатся очень просто с помощью ifndef/define и как аргумент не рассматриваются т.к. без защиты от множественных инклюдов в любом проекте где один хидер используется более чем в 1 .c файле будут проблемы.

Мой аргумент почему это стоит делать: Хидер - это заголовок модуля, определяющий его публичный интерфейс. Логично расположить в нём всё необходимое для работы модуля, а в .с файле инклюдить только один этот заголовок т.о. отделив реализацию от интерфейса. Улучшается наглядность т.к. сразу в хидере видно зависимости от других модулей.
Погуглив можно найти мнение со ссылкой на NASA C coding standard где написано
Цитата
(4)
The unit header file shall contain #include statements for all other headers required by the unit
header. This lets clients use a unit by including a single header file.


Так как же "правильнее"? NASA не дураки ведь. Так почему существуют противоположные мнения?


--------------------
typedef enum { no, yes, maybe } bool; | блог тут
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Cosmojam   include в хидере - всё таки это доро или зло?   Oct 10 2013, 22:00
- - AlexandrY   Цитата(Cosmojam @ Oct 11 2013, 01:00) Сущ...   Oct 11 2013, 05:47
|- - halfdoom   Цитата(AlexandrY @ Oct 11 2013, 08:47) В ...   Oct 11 2013, 06:12
|- - demiurg_spb   Немного offtopic... Чтобы не слишком много пережи...   Oct 11 2013, 06:34
- - Сергей Борщ   QUOTE (Cosmojam @ Oct 11 2013, 01:00) Хид...   Oct 11 2013, 06:53
|- - Cosmojam   Цитата(Сергей Борщ @ Oct 11 2013, 09:53) ...   Oct 11 2013, 10:34
||- - Сергей Борщ   QUOTE (Cosmojam @ Oct 11 2013, 13:34) Ок,...   Oct 11 2013, 10:58
|- - ar__systems   Цитата(Сергей Борщ @ Oct 11 2013, 01:53) ...   Oct 13 2013, 20:35
- - _Pasha   Инклюды в хедере - вне добра и зла и их применение...   Oct 11 2013, 07:01
|- - AlexandrY   Цитата(_Pasha @ Oct 11 2013, 10:01) Инклю...   Oct 11 2013, 08:04
|- - Сергей Борщ   QUOTE (AlexandrY @ Oct 11 2013, 11:04) За...   Oct 11 2013, 08:17
|- - AlexandrY   Цитата(Сергей Борщ @ Oct 11 2013, 11:17) ...   Oct 11 2013, 08:38
- - XVR   Цитата(Cosmojam @ Oct 11 2013, 02:00) Сущ...   Oct 11 2013, 07:43
- - kolobok0   Цитата(Cosmojam @ Oct 11 2013, 02:00) ..С...   Oct 11 2013, 12:11
- - igorle   У нас на фирме приняты правила, совпадающие с НАСА...   Oct 11 2013, 12:12
|- - Сергей Борщ   QUOTE (igorle @ Oct 11 2013, 15:12) У нас...   Oct 11 2013, 13:06
- - Cosmojam   Ок, это я не правильно понял тот абзац из стандарт...   Oct 11 2013, 15:18


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 03:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01343 секунд с 7
ELECTRONIX ©2004-2016