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?