For the problem, consider below two structures.
struct type1_A
{
    int a;
    char b;
    char rsvd[10];
    char c;
    int d;
}
struct type1_B
{
    int d;
    char rsvd[12];
    char c;
    char b;
    int a;
}
I need to read fields a, b, c & d from the structs. I will have a buffer address and that buffer will have one of the struct. A flag can tell what kind of struct it is.
if (flag == TYPE1_A) {
    a = ((struct type1_A*) (buffer))->a;
}
else if (flag == TYPE1_B) {
    a = ((struct type1_B*) (buffer))->a;
}
But when there are many such reads, I dont want to keep on having if-else like above. Is there some way (hack) that this can be done without if-else. The field names will be same but at a different offset.
 
     
    