Еще можно так :
#pragma pack(push, 1)
struct S {
unsigned char a;
void *p;
unsigned char b;
}
#pragma pack(pop)
Это даёт транслятору команду запомнить текущие параметры упаковки и и переопределить на побайтную, а после, восстановить что были до того.