Ho una struttura con campi di bit (totalmente a 32 bit di larghezza) e ho una variabile a 32 bit. Quando provo ad assegnare il valore della variabile al mio struct, ho ottenuto un errore:Come assegnare un valore a una struttura con campi bit?
error: conversion from ‘uint32_t {aka unsigned int}’ to non-scalar type ‘main()::CPUID’ requested.
struct CPUIDregs
{
uint32_t EAXBuf;
};
CPUIDregs CPUIDregsoutput;
int main() {
struct CPUID
{
uint32_t Stepping : 4;
uint32_t Model : 4;
uint32_t FamilyID : 4;
uint32_t Type : 2;
uint32_t Reserved1 : 2;
uint32_t ExtendedModel : 4;
uint32_t ExtendedFamilyID : 8;
uint32_t Reserved2 : 4;
};
CPUID CPUIDoutput = CPUIDregsoutput.EAXBuf;
Avete qualche idea di come farlo nella via più breve? Grazie
P.S. Ovviamente ho un valore più appropriato di EAX nel codice reale, ma suppongo che non influenzi qui.
Si potrebbe desiderare un 'unione' piuttosto che una 'struct' qui. Altrimenti puoi impostare separatamente ciascuna variabile nella struct. non si può fare 'CPUID CPUIDoutput = EAX;' si dovrà fare 'CPUIDoutput.stepping = EAX;' – andre