मैं थोड़ा-क्षेत्र (पूरी तरह से 32 बिट चौड़ाई) के साथ एक struct है और मैं एक 32-बिट चर है।बिट-फ़ील्ड वाले स्ट्रक्चर को मान कैसे असाइन करें?
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;
आप कैसे सबसे छोटा रास्ता में यह करने के लिए किसी भी विचार है: जब मैं अपने struct चर मान असाइन करने का प्रयास करें, मैं एक त्रुटि मिल गया? धन्यवाद
पी.एस. बेशक मेरे पास असली कोड में ईएक्स का अधिक उचित मूल्य है, लेकिन मुझे लगता है कि यह यहां प्रभावित नहीं होता है।
आप यहां 'संरचना' की बजाय 'संघ' चाहते हैं। अन्यथा आप केवल प्रत्येक चर को संरचना में अलग-अलग सेट कर सकते हैं। आप 'ऐसा नहीं कर सकते CPUID CPUIDoutput = EAX, यह अधिक स्पष्ट रूप से कारण है कि मैं एक ही बार में पूरी संरचना करने के लिए EAX आवंटित करने के लिए कोशिश कर रहा हूँ' – andre