相关疑难解决方法(0)

如何使用位字段为结构赋值?

我有一个带有位字段的结构(总共32位宽度),我有一个32位变量.当我尝试将变量值分配给我的结构时,我收到一个错误:

错误:从'uint32_t {aka unsigned int}'转换为请求的非标量类型'main():: CPUID'.

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;
Run Code Online (Sandbox Code Playgroud)

你知道如何以最短的方式做到这一点吗?谢谢

PS当然我在实际代码中有更合适的EAX值,但我想这不会影响到这里.

c++ bit-fields

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

bit-fields ×1

c++ ×1