uint8_t数组的可变大小

时间:2018-11-24 23:45:27

标签: c arrays stm32 cortex-m

我正在用STM32板编写UART上的通信协议。我需要在以下函数中包含uint8_t值的可变大小数组:

void sendDataToSlave_UART(UART_HandleTypeDef *huart, uint8_t destinationSlave, uint8_t bytesToSend, uint8_t data)
{
    uint8_t masterTxBuffer[bytesToSend+4] = {0};

    ...

}

我尝试了上面的表达式,但收到错误消息“可变大小的对象可能未初始化”。

该如何解决此问题?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

编译器在编译时不知道VLA的大小,因此您必须在运行时对其进行初始化,例如:

memset(masterTxBuffer, 0, (bytesToSend+4)*sizeof(uint8_t) );