我有一个结构位字段(总共32位宽),我有一个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;
你有任何想法如何做到这一点的最简单的办法?谢谢
P.S.当然,我在实际代码中有更适当的EAX价值,但我想这不影响。
您可能想在这里使用'union'而不是'struct'。否则,你只能单独设置结构中的每个变量。你不能'CPUID CPUIDoutput = EAX;'你必须做'CPUIDoutput.stepping = EAX;' – andre