Имхо, проверять выравнивание я делаю так
/
#pragma pack(push,1)
typedef struct
{
unsigned short Inv; //0 Регистр Инверсий входных сигналов
RegComp_t RegComp; //2 Регистр комплектации
////////////
unsigned char vrv[1]; //86 выравнивание
unsigned char CRCzap; //87+1 должно быть кратно 4
}IntEEPROM_t;
#pragma pack(pop)
//Проверка рахмещения данных
#include <stddef.h>
//Проверка выравнивания CRC
typedef struct {int ProverkaCRC : !((offsetof(IntEEPROM_t, CRCzap)+1)%4);} CRCProverka;
//проверка выравнивания переменных
#define PROVERKA(var) typedef struct {int Proverka : !((offsetof(IntEEPROM_t, var))%sizeof((((IntEEPROM_t*)0)->var)));} var##__COUNTER__;
PROVERKA(Inv) //0 Регистр Инверсий входных сигналов
PROVERKA(RegComp) //2 Регистр комплектации
/