Ich habe eine Struktur mit Bit-Feldern (insgesamt 32 Bit Breite) und ich habe eine 32-Bit-Variable. Wenn ich versuche, den Variablenwert zu meiner Struktur zuweisen, bekam ich einen Fehler:Wie weisen Sie einer Struktur mit Bitfeldern Werte zu?
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;
Sie haben keine Ahnung, wie es in dem kürzesten Weg zu tun? Danke
P.S. Natürlich habe ich einen besseren EAX-Wert in echtem Code, aber ich nehme an, dass es hier keinen Einfluss hat.
Möglicherweise möchten Sie hier eine "union" statt einer "struct". Andernfalls können Sie jede Variable in der Struktur nur separat setzen. du kannst nicht 'CPUID CPUIDoutput = EAX;' du musst 'CPUIDoutput.stepping = EAX;' – andre