Я пытаюсь инициализировать статический массив с размером, основанным на том, что, по моему мнению, должно быть константой времени компиляции.
Это легко исправить, но просто без использования статического, но я не ожидалэта проблема, чтобы показать на всех.Это может вызвать у меня другие проблемы в будущем.
Соответствующие разделы:
typedef struct {
GPIO_TypeDef* Port;
uint16_t Pin;
} PortPin;
typedef struct {
I2C_HandleTypeDef *Handle;
uint16_t Address;
PortPin Interrupt;
PortPin Shutdown;
} VL53L1_Dev_t;
//This one is bigger but I've kept it short to keep it readable. It's 3 elements in my code
static VL53L1_Dev_t Sensors[] = {
{//1
&hi2c2,
0x52,
{
GPIOA,
GPIO_PIN_11
},
{
GPIOA,
GPIO_PIN_10
}
}
}
static const int sensorCount = sizeof(Sensors)/sizeof(Sensors[0]);
static uint8_t encodedData[sensorCount * 2];//Compiler doesn't like this part
Поскольку датчики полностью определены во время компиляции, я ожидал, что sensorCount также будет постоянной времени компиляции,Что, очевидно, не потому, что я не могу использовать его для объявления и инициализации статических массивов.Я не понимаю почему.