|
Мое мнение - не надо насиловать язык. В смысле организации проекта C ничем не отличается от ассемблера. Лишние extern воспринимаются нормально. Надо просто на каждый модуль c делать свой заголовочный файл, в котором объявляются все, что модуль отдает наружу. Я бы не советовал делать как Bill - не надо собирать все файлы .h в кучу и включать их во все модули. Нужно включать только те, которые нужны. Если проект нормально разбит по уровням, таких файлов будет немного. А по тому, какие файлы включены в модуль, можно легко увидеть внешние связи.
Естественно, отдельные .h файлы нужны для описания аппаратуры (DS1307.h, DS1820.h и т.д.), там описываются только константы - адреса регистров, размеры памяти, значения регистров и т.д.
У нас вообще принято на некоторые модули делать не один, а 2 заголовочных файла - один интерфейсный (обычно
E-mail:
info@telesys.ru
Так как в С пространство имен общее, для всех внешних имен модуля должен использоваться префикс, проще всего имя модуля.
Согласен, что лучше было бы, если модули поддерживались компилятором, как в паскале, модуле или аде, но приходится как-то жить с тем, что есть.
Ответы