我知道这个警告已经被问过很多次了。但是我想不起来如何编辑代码。
我仅在错误/警告部分包含代码。
const unsigned char *ad[100];
unsigned long long ad[100];
int main
{
adlen = CDC_Device_BytesReceived(&VirtualSerial_CDC_Interface);
if(adlen > 0)
{
ad[i] = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
i++;
adlen--;
}
}
编译后,我会收到警告。
warning: assignment makes pointer from integer without a cast
ad[i] = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
^
我也尝试过在线搜索另一种声明方式。
const unsigned char *ad; //or const unsigned char *ad = malloc(100);
unsigned long long ad[100];
int main
{
adlen = CDC_Device_BytesReceived(&VirtualSerial_CDC_Interface);
if(adlen > 0)
{
ad[i] = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
i++;
adlen--;
}
}
但是我最终会得到一个错误
error: assignment of read-only location '(ad + (sizetype)((unsigned int)i * 1u))'
ad[i] = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
^
我无法更改,而必须声明const unsigned char *ad
作为指针,因此我可能必须在int main中向我的代码添加/更改某些内容,但我无法考虑如何/做什么。
如果有人可以帮助/指导我如何处理此警告和错误,我将感到非常高兴。谢谢!
答案 0 :(得分:2)
函数CDC_Device_ReceiveByte
返回类型为int16_t
的值,因此您需要
int16_t ad[100];