由于此行打算将指针增加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;
}

10-07 12:11