Цитата(zltigo @ Feb 29 2008, 00:55)

Это не вдруг

Все-таки, предложеный вами typedef - это не решение вопроса, а обходной путь. Через typedef все работает. Я вообще typedef применяю только тогда, когда нужно структуру применить несколько раз. В случае уникальной структуры предпочитаю явные определения. Иначе, для того, чтобы посмотреть на члены структуры, приходится лезть лишний раз в хедер. Зачем мне лишняя вложенность, только ухудшает понимабельность. А в этом конкретном случае я решил свести несколько отдельных char в структуру только исходя из эстетических соображений

По стандарту Си мой вариант написания совершенно легален.
Цитата(rezident @ Feb 29 2008, 01:12)

...Пользуйтесь активнее условной компиляцией...
Это дельное замечание, буду применять. Раньше писал небольшие проекты, ограничивался несколькими файлами в проекте: main.c; modules.c; isr.c; memory.c; defines.h - все было без проблем. Сейчас проект побольше. А когда в файле больше нескольких тысяч строк, уже неудобно, решил начать делить проект ещё и по периферии. Вот и возникла по-первости такая каша
to All: Спасибо за участие, с вашей помощью разобрался, дело в следующем. ИАР не всегда дозволяет в одном модуле наличие собственно определения переменной и определение её как extern. Примеры:
Это проходит без ошибок:
Код
extern char a;
extern int b[10];
char a;
int b[10];
typedef struct c_t{
char a;
int b;
} c_t;
extern c_t ccc;
c_t ccc;
extern c_t ccc;
А на явное определение struct или union ругается:
Код
struct {
char a;
int b;
} ddd;
extern struct {
char a;
int b;
} ddd;
И я не знаю, правильно это или нет. По моему мнению все должно быть однообразно, а не так