Why this piece of code is needed ?
typedef struct corr_id_{
    unsigned int  size:8;       
    unsigned int  valueType:8;  
    unsigned int  classId:8;   
    unsigned int  reserved:8;    
} CorrId;
I did some investigation around it and found that this way we are limiting the memory consumption to just what we need. For E.g.
typedef struct corr_id_new{
    unsigned int  size;       
    unsigned int  valueType;  
    unsigned int  classId;   
    unsigned int  reserved;   
} CorrId_NEW;
typedef struct corr_id_{
    unsigned int  size:8;       
    unsigned int  valueType:8;  
    unsigned int  classId:8;   
    unsigned int  reserved:8;   
} CorrId;
int main(){
CorrId_NEW Obj1;
CorrId     Obj2;
std::cout<<sizeof(Obj1)<<endl;
std::cout<<sizeof(Obj2)<<endl;
}
Output:-
16
4
I want to understand the real use case of such scenarios? why can't we declare the struct something like this,
typedef struct corr_id_new{
    unsigned _int8  size;       
    unsigned _int8  valueType;  
    unsigned _int8  classId;   
    unsigned _int8  reserved;   
} CorrId_NEW;
Does this has something to do with compiler optimizations? Or, what are the benefits of declaring the structure that way?
 
     
    
 
     
     
    