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

Местный
  
Группа: Свой
Сообщений: 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: Конечно, можно компоновать как попало, имея в результате полноценный рабочий код, но вопрос в том, как общепринято ПРАВИЛЬНО это выполнять?
|
|
|
|
|
 |
Ответов
|
May 5 2009, 07:00
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Rst7 @ May 4 2009, 23:46)  Можем пойти в оффтоп обсудить, там есть кому подхватить, страниц на 20-30  Нет  там любая тема всегда к одному и тому-же сводится  . Я тут недавно эксперимента ради объединил темы про "опель" и "гомосексуализм" в одну и НИЧЕГО НЕ ИЗМЕНИЛОСЬ  . Ну а с подтверждением правил на самом деле все логично - если признается существование единого общего правила, то тогда все отклонения от него являются ИСКЛЮЧЕНИЯМИ из правила, что самим своим названием "исключение", заметьте "исключение", а не "правило номер 2" подтверждает наличие "правила".
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
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 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|