我正在使用 IAR Systems 的 EWARM 6.6 并得到以下我无法解释的编译错误。
void testFunc(uint8_t* buf, uint8_t length)
{
struct
{
uint8_t start;
uint8_t data[length];
uint8_t stop;
}longframe;
longframe.start = 1;
memcpy( longframe.data, buf, length );
longframe.stop = 2;
}
编译器抛出错误消息:“Error[Pe028]: expression must have a constant value”。如果将变量声明为静态或全局变量,这是可以接受的,但在这种情况下,我不知道。我用 GCC 编译器尝试了相同的代码,它运行良好。有人有什么想法吗?
被批评的部分是结构内数据的长度。它说长度必须是恒定的。