Имеется две структуры,одна из них вложена в другую
// структура пакета
#define SIZE_REG (20) // размер стороны квадрата области
#define MAX_NUMBER_REG (16) // максимальное число передаваемых областей
#pragma pack(1)
typedef struct {
unsigned long NumRegion; // номер области, число 0 .. 15
unsigned short CoordinateX; // координата области по оси X, 10бит
unsigned short CoordinateY; // координата области по оси y, 10бит
unsigned short NoiseMiddle; // средний шум области, 12бит
unsigned short NoiseSKO; // средне квадратичное отклонение шума, 12бит
unsigned short Pixel[SIZE_REG * SIZE_REG]; // собственно значения яркости пикселов 12 бит
}ONE_REGION;
typedef struct {
unsigned long Prefix; // префикс/старт посылки
unsigned long Func; // функция
unsigned long NumbersOfRegion; //количество передаваемых областей
ONE_REGION Regions[MAX_NUMBER_REG]; // собственно значения яркости пикселов 12 бит
unsigned long Telemeter[2]; // телеметрическая информация 5х8 бит
unsigned long CheckSum; // контрольная сумма
unsigned long Suffix; // суффикс/конец посылки
}FULL_REGION_ANSWER;
#pragma pack()
На сколько я понимаю обе структуры имеют размерность кратную unsigned long.
И член структуры Telemeter[0] выравнен на границу 4 байт.
Но при установке указателя на этого члена стуктури вызывает предупреждение
FULL_REGION_ANSWER OurRegion;
..
src = (unsigned char*)&OurRegion.Telemeter[0];
..
Warning[Pa039]: use of address of unaligned structure member D:\Arsenal\SPI_SLAVE\USB_SSC\firmware\parser.c 105