C error: expression must have a constant value
===

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

    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;


I have then defined each register in my sources as follows

    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};

etc.

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

My issue comes when I try to make the array of ts_registers that I want to read as follows:

    ts_register regs_to_read[3] = {VRMS, IRMSA, IRMSB};
This generates the error: "expression must have a constant value" 3 times (once per array element). 

Since they are defined as constants, what have I overlooked?