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

 
 
> Как соблюсти ПРАВИЛА ХОРОШЕГО ТОНА при написании программ на Си?, (Как компоновать проект? Что оставлять в xxx.c, а что в xxx.h ?)
kv_addr
сообщение May 4 2009, 18:14
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Написал было объемистое предисловие, но Фаерфокс глюкнул и оно исчезло, поэтому обойдусь без него.

Перешел с ассемблера на Си, создал ряд проектов, работающих, но так и не получил четкого представления о том, как нужно оформлять программу на Си по ПРАВИЛАМ. Может сказалась былая практика программирования на Фортране и Паскале. Наибольшее непонимание у меня вызывает то, что нужно оставлять в xxx.c, а что выносить в xxx.h. Виной тому - ужасная чересполосица в куче разных сторонних проектов, которые довелось разбирать в процессе освоения Си. В одних проектах водораздел один, в других - совсем иной. И даже в атмеловских аппноутах - тоже полный разнобой.

Пользуюсь IAR EWAVR-ом.

Вот пара примеров написания программ, с которыми встречался:
Имеются: основной модуль - xxx.c, хедер к нему - xxx.h, пара модулей - yyy.c, zzz.c и хедеры к ним yyy.h, zzz.h.

Первый вариант организации проекта. В проект подключен основной модуль xxx.c, в котором в самом начале подключен при помощи директив #include необходимый набор стандартных библиотек, хедер xxx.h, а также два дополнительных модуля yyy.c и zzz.c. В самих модулях yyy.c и zzz.c при помощи этих директив подключены yyy.h и zzz.h соответственно. В основном модуле располагается главная программа и набор функций, относящихся непосредственно к ней. В хедере располагаются глобальные определения, описания глобальных переменных и констант, а также прототипы функций основного модуля. В дополнительных модулях располагаются функции модулей, а в хедерах дополнительных модулей располагаются определения, переменные, константы и прототипы, касающиеся этих модулей.


Во втором варианте организации проекта дополнительные модули включены в проект подобно основному. В основном же модуле при помощи #include подключены yyy.h и zzz.h. Также они подключены с помощью этой директивы и в yyy.c и zzz.c соответственно.

Оба проекта полностью рабочие, потому как в конечном счете все полностью завязано и в первом и во втором случае.

Встречался также с вариантами написания программ, где, например, описания переменных вынесены в ***.c вместо ***.h.

Имею два конкретных вопроса:

1. КАК нужно подключать в проект модули и хедеры согласно ПРАВИЛ ХОРОШЕГО ТОНА написания программ на языке Си?
2. ЧТО нужно согласно тех же ПРАВИЛ выносить в ***.h, а что оставлять в ***.c?

Четкого, внятного, однозначного ответа я так и не нашел. Хотелось бы узнать мнение уважаемого сообщества.

PS: Конечно, можно компоновать как попало, имея в результате полноценный рабочий код, но вопрос в том, как общепринято ПРАВИЛЬНО это выполнять?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- kv_addr   Как соблюсти ПРАВИЛА ХОРОШЕГО ТОНА при написании программ на Си?   May 4 2009, 18:14
- - zltigo   C Си нет ничего проще. В хидерах только прототипы ...   May 4 2009, 19:22
- - HARMHARM   Цитата(kv_addr @ May 4 2009, 21:14) Первы...   May 4 2009, 19:23
- - Rst7   ЦитатаНикакие *.c никогда через include не включаю...   May 4 2009, 19:45
|- - zltigo   Цитата(Rst7 @ May 4 2009, 22:45) Мне каже...   May 4 2009, 19:55
- - Rst7   ЦитатаИсключения только подтверждают правило Ну В...   May 4 2009, 20:14
|- - zltigo   Цитата(Rst7 @ May 4 2009, 23:14) Ну Вы же...   May 4 2009, 20:18
- - Rst7   Цитатаэто все основоположники римского права Я в ...   May 4 2009, 20:46
|- - zltigo   Цитата(Rst7 @ May 4 2009, 23:46) Можем по...   May 5 2009, 07:00
- - kv_addr   TNX. Где-то так и предполагал, что второй вариант ...   May 4 2009, 22:46
|- - _Pasha   Цитата(kv_addr @ May 5 2009, 01:46)  Коне...   May 5 2009, 07:01
|- - Legotron   Цитата(kv_addr @ May 5 2009, 02:46) Следу...   May 5 2009, 07:36
- - Slash   Кое какие правила есть в книге "Искусство про...   May 5 2009, 06:31
|- - zltigo   Цитата(Slash @ May 5 2009, 09:31) Кое как...   May 5 2009, 07:03
- - MrYuran   Ещё одно из немаловажных правил хорошего тона, к о...   May 5 2009, 07:35
- - zltigo   Цитата(MrYuran @ May 5 2009, 10:35) ...ед...   May 5 2009, 08:17
- - Dog Pawlowa   Цитата(zltigo @ May 5 2009, 11:17) Лобово...   May 5 2009, 08:23
- - Legotron   Цитата(Dog Pawlowa @ May 5 2009, 12:23) Е...   May 5 2009, 08:33
- - Dog Pawlowa   Цитата(Legotron @ May 5 2009, 11:33) Зато...   May 5 2009, 08:42
- - zltigo   Цитата(Dog Pawlowa @ May 5 2009, 11:42) П...   May 5 2009, 08:50


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

 


RSS Текстовая версия Сейчас: 21st June 2025 - 21:27
Рейтинг@Mail.ru


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