title: C error: expression must have a constant value
body: <p>I am writing some embedded code to interface with an external device over SPI. The device has several registers of varying length and to help keep things straight I have defined the following structure</p>
  
  <pre><code>typedef struct
  {
      uint16_t    Signed          :1;  // Register is signed or unsigned
      uint16_t    CommLengthBytes :3;  // The width of the register in bytes 
      uint16_t    Address         :12; // Register address
  }ts_register;
  </code></pre>
  
  <p>I have then defined each register in my sources as follows</p>
  
  <pre><code>static const ts_register    SAGCYC      = {0, 1, 0x000};
  static const ts_register    DISNOLOAD   = {0, 1, 0x001};
  static const ts_register    LCYCMODE    = {0, 1, 0x004};
  static const ts_register    IRMSA       = {0, 4, 0x31A};
  static const ts_register    IRMSB       = {0, 4, 0x31B};
  static const ts_register    VRMS        = {0, 4, 0x31C};
  </code></pre>
  
  <p>etc.</p>
  
  <p>I have a function that will take a pointer to an array of ts_registers and queue up the SPI transfers required to read all of the registers in the array and call a callback function to handle the reply</p>
  
  <p>My issue comes when I try to make the array of ts_registers that I want to read as follows:</p>
  
  <pre><code>ts_register regs_to_read[3] = {VRMS, IRMSA, IRMSB};
  </code></pre>
  
  <p>This generates the error: "expression must have a constant value" 3 times (once per array element). </p>
  
  <p>Since they are defined as constants, what have I overlooked?</p>