我正在用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};
...
}
我尝试了上面的表达式,但收到错误消息“可变大小的对象可能未初始化”。
该如何解决此问题?
提前谢谢!
答案 0 :(得分:1)
编译器在编译时不知道VLA的大小,因此您必须在运行时对其进行初始化,例如:
memset(masterTxBuffer, 0, (bytesToSend+4)*sizeof(uint8_t) );