Цитата(aspID @ May 22 2012, 19:57)

Вообще, предполагалось, что USART.h - самостоятельная и отдельная вещь, навроде библиотеки, которую в дальнейшем можно будет использовать в разных проектах БЕЗ внесения в нее правок и необходимости перекомпиляции

Цитата(aspID @ May 22 2012, 19:57)

Так ворнинг руками и выдается. Просто сделана "затычка", которая если не видит - предупреждает и переобъявляет. И в данном контексте раз не видит - значит, ошибка. [Моя ошибка имеется в виду, только пока до конца не понимаю, в чем]
Ну раз хотите как "библиотеку" то можно так: создаёте файл допустим usart_cfg.h:
Код
#pragma once
#define USART_BUF_SIZE 32
Файл usart_cfg.h вставляете в USART.h(include "usart_cfg.h") - так он будет виден в main.c и USART.c с одним и тем же USART_BUF_SIZE.
Но перекомпилироваться всё равно будет...
Цитата(aspID @ May 22 2012, 19:57)

Вообще,
Код
#pragma once
имеет то же назначение. Если компилятор без косяков этом месте

В общем - да, смысл тот же.
Цитата(demiurg_spb @ May 22 2012, 20:11)

лежат в библиотеке в единственном экземпляре и подключаются ко всем проектам, в которых в них есть нужда, а
module_conf.h копируется в каждый проект и модифицируется под него (например задаёт размер фифо для уара и кол-во активных уартов ну и т.д. и т.п)
Может сразу template.
Цитата(demiurg_spb @ May 22 2012, 20:11)

Каждый модуль состоит из 3 файлов:
module.c
module.h
module_conf.h - он включён инклюдом в module.h.
И чтобы сократить количество файлов которые нужно редактировать можно завести один файл io_modules_conf.h, включить его во все module.h - и все настройки в нём сразу и менять.