Переменный размер массива uint8_t
Я программирую протокол связи через UART с платой STM32. Мне нужен массив переменного размера значений uint8_t внутри следующей функции:
void sendDataToSlave_UART(UART_HandleTypeDef *huart, uint8_t destinationSlave, uint8_t bytesToSend, uint8_t data)
{
uint8_t masterTxBuffer[bytesToSend+4] = {0};
...
}
Я попробовал приведенное выше выражение, но получаю ошибку "объект переменного размера не может быть инициализирован".
Что я могу сделать, чтобы исправить эту проблему?
Заранее спасибо!
1 ответ
Решение
Компилятор не знает размер VLA во время компиляции, поэтому вы должны инициализировать его во время выполнения, что-то вроде:
memset(masterTxBuffer, 0, (bytesToSend+4)*sizeof(uint8_t) );