C error: la expresión debe tener un valor constante

Estoy escribiendo un código incorporado para interactuar con un dispositivo externo a través de SPI. El dispositivo tiene varios registros de longitud variable y para ayudar a mantener las cosas en orden, he definido la siguiente estructura

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;

Luego he definido cada registro en mis fuentes de la siguiente manera

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.

Tengo una función que llevará un puntero a una matriz de ts_registers y pondrá en cola las transferencias SPI necesarias para leer todos los registros de la matriz y llamar a una función de devolución de llamada para manejar la respuesta

Mi problema viene cuando intento hacer la matriz de ts_registers que quiero leer de la siguiente manera:

ts_register regs_to_read[3] = {VRMS, IRMSA, IRMSB};

Esto genera el error: "la expresión debe tener un valor constante" 3 veces (una vez por elemento de matriz).

Ya que están definidas como constantes, ¿qué he pasado por alto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta