Цитата
Да не надо ничего говорить!
Внутри структуры байты не выраниваются! их размер кратен 1!
16 - бит врыаниваются по 16 бит
32 - бит по 32.
если убрать pack - структура будет абсолютно такая же!
Я наверное многих ввл в заблуждение стуруктурой
Код
#pragma pack(1)
typedef
{
uint8 a8_0;
uint8 a8_1;
uint8 a8_2;
uint8 a8_3;
uint32 data_1;
uint32 data_2;
} rtp_heder_t;
Эта структура просто как пример, давайте расмотримтакую структуру, она более наглядно докажет что pack убрать нельзя.
typedef
{
uint8 a8_0;
uint16 x;
uint8 a8_1;
uint32 data_1;
uint32 data_2;
} rtp_heder_t;
[/code]
Вопрос стоит не втом чтобы изменить структуры, можно и протокол переделать

, это не проблема, вопрос стоит как заставить компилятор

, и я нашел решение
вот так
Код
rtp_heder_t *ptr; //указатель на структуру
uint32 *t; //дополнительная переменная без нее никак
ptr = (rtp_heder_t*)&my_buff; //берем указатель буфера ввода
t = (uint32*)(&ptr->data_1);
if (*t == data) ... //вот теперь работает как надо
Приэтом компилятор выдал варниг
Warning[Pa039]: use of address of unaligned structure member
P.S. Этот вопрос несет спортивный характер