由于此行打算将指针增加0x200(指向下一段),因此我收到了编译错误
Flash_ptr = Flash_ptr + (unsigned char *) 0x200;
我看过this,但未使用任何非法符号!
P.S.指针的初始化:
unsigned char * Flash_ptr = (unsigned char *) 0x20000;
最佳答案
您不能添加两个指针。您可以向指针添加整数,也可以减去两个指针以获得整数差,但是添加两个指针毫无意义。因此,要解决您的问题,您只需要删除类型转换:
Flash_ptr = Flash_ptr + 0x200;
这会使
Flash_ptr
增加0x200个元素,但是由于Flash_ptr
的类型为unsigned char *
,因此它仅转换为0x200字节的增量。为了使这部分成为循环并检查上限,您可以执行以下操作:
while (Flash_ptr < (unsigned char *)0x50000) // loop until Flash_ptr >= 0x50000
{
// ... do something with Flash_ptr ...
Flash_ptr += 0x200;
}