Цитата(Alt.F4 @ Jul 14 2013, 17:10)

Подскажите, пожалуйста:
1. Как объявить указатель двухбайтовым, т.к. длина структуры больше 255?
Размер указателя зависит от архитектуры и компилятора. Если длина данных у вас не вмещается в байт, то используйте такой цикл:
Код
uint8_t * src=(uint8_t *)&S;
uint8_t * dest=Buffer;
for (uint16_t i=0; i<sizeof(STR); i++) // uint16_t - можно копировать до 65535 байт, uint32_t - больше 4 млрд. байт
*dest++=*src++;
Цитата(Alt.F4 @ Jul 14 2013, 17:10)

На uint16_t * src=(uint8_t *)&S; компилятор ставит варнинг.
И правильно что ругается - приводите не к тому типу, надо к int16_t *.
Код
uint16_t * src=(uint16_t *)&S;
Цитата(Alt.F4 @ Jul 14 2013, 17:10)

2. Как объявить структуру как внешнюю, типа extern struct?
Поместите в какой-нибудь инклуд:
Код
struct Data_t {
unsigned char A;
unsigned char B;
};
extern struct Data_t D;
А в ц-файл так:
Код
struct Data_t D;