Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено smav 25 мая 2005 г. 11:31
В ответ на: Проблема вот в чем (+) отправлено <font color=gray>Vladimir Ljaschko</font> 25 мая 2005 г. 11:00

Мое мнение - не надо насиловать язык. В смысле организации проекта C ничем не отличается от ассемблера. Лишние extern воспринимаются нормально. Надо просто на каждый модуль c делать свой заголовочный файл, в котором объявляются все, что модуль отдает наружу. Я бы не советовал делать как Bill - не надо собирать все файлы .h в кучу и включать их во все модули. Нужно включать только те, которые нужны. Если проект нормально разбит по уровням, таких файлов будет немного. А по тому, какие файлы включены в модуль, можно легко увидеть внешние связи.
Естественно, отдельные .h файлы нужны для описания аппаратуры (DS1307.h, DS1820.h и т.д.), там описываются только константы - адреса регистров, размеры памяти, значения регистров и т.д.

У нас вообще принято на некоторые модули делать не один, а 2 заголовочных файла - один интерфейсный (обычно .h), а другой настроечный (_cfg.h). Интерфейсный файл пишет и изменяет разработчик модуля, он содержит переменные и функции, которые отдаются наружу. Настроечный файл содержит описание того, что модуль использует, параметры условной трансляции и т.д. Его пишет тот, кто использует модуль в своем проекте. Обычно он содержит include для файла конфигурации проекта, в котором описываются параметры проекта, а через них уже задаются параметры модуля.
Так как в С пространство имен общее, для всех внешних имен модуля должен использоваться префикс, проще всего имя модуля.
Согласен, что лучше было бы, если модули поддерживались компилятором, как в паскале, модуле или аде, но приходится как-то жить с тем, что есть.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru