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?