Переменный размер массива 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) );
Другие вопросы по тегам