Зачем нужен этот кусок кода?Размер ограничивающих структур с использованием:
typedef struct corr_id_{
unsigned int size:8;
unsigned int valueType:8;
unsigned int classId:8;
unsigned int reserved:8;
} CorrId;
Я провел некоторое исследование вокруг него и обнаружил, что таким образом мы ограничиваем потребление памяти только тем, что нам нужно. .
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;
}
Выход: -
16
4
Я хочу, чтобы понять реальный случай использования таких сценариев? почему мы не можем объявить структуру что-то вроде этого,
typedef struct corr_id_new{
unsigned _int8 size;
unsigned _int8 valueType;
unsigned _int8 classId;
unsigned _int8 reserved;
} CorrId_NEW;
Связано ли это с оптимизацией компилятора? Или, каковы преимущества объявления структуры таким образом?
На самом деле вы должны объединить два подхода ... или использовать 'pack' /' packed' –
Вы уверены, что вывод '4 16', а не' 16 4'? –
Спасибо. внесли эти изменения. –