title: How to assign value to a struct with bit-fields?
body: <p>I have a struct with bit-fields (totally 32 bit width) and I have a 32-bit variable. When I try to assign the variable value to my struct, I got an error:</p>
  
  <blockquote>
    <p>error: conversion from ‘uint32_t {aka unsigned int}’ to non-scalar type ‘main()::CPUID’ requested.</p>
  </blockquote>
  
  <pre><code>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;
  </code></pre>
  
  <p>Do you have any idea how to do it in the shortest way? Thanks</p>
  
  <p>P.S. Of course I have more appropriate value of EAX in real code, but I guess it doesn't affect here.</p>