Erro C: a expressão deve ter um valor constante

Eu estou escrevendo algum código incorporado para fazer interface com um dispositivo externo através do SPI. O dispositivo tem vários registros de comprimento variável e para ajudar a manter as coisas retas eu defini a seguinte estrutura

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;

Eu defini cada registro em minhas fontes da seguinte forma

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.

Eu tenho uma função que terá um ponteiro para uma matriz de ts_registers e fila as transferências de SPI necessárias para ler todos os registradores na matriz e chamar uma função de retorno de chamada para manipular a resposta

Meu problema surge quando tento fazer o array de ts_registers que quero ler da seguinte forma:

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

Isso gera o erro: "expressão deve ter um valor constante" 3 vezes (uma vez por elemento da matriz).

Como eles são definidos como constantes, o que eu negligenciei?

questionAnswers(3)

yourAnswerToTheQuestion