我得到了编译错误,因为这行旨在将指针增加0x200(指向下一个段)
Flash_ptr = Flash_ptr + (unsigned char *) 0x200;
我见过this,但我没有使用任何非法符号!
P.S。指针初始化:
unsigned char * Flash_ptr = (unsigned char *) 0x20000;
答案 0 :(得分:4)
你不能添加两个指针。您可以向指针添加整数,并且可以减去两个指针以获得整数差异,但添加两个指针是没有意义的。因此,要解决您的问题,您只需要删除演员:
Flash_ptr = Flash_ptr + 0x200;
这会使Flash_ptr
增加0x200 个元素,但由于Flash_ptr
的类型为unsigned char *
,因此这只会转换为0x200 bytes的增量< / em>的
为了使这部分循环并检查上限,你可以这样做:
while (Flash_ptr < (unsigned char *)0x50000) // loop until Flash_ptr >= 0x50000
{
// ... do something with Flash_ptr ...
Flash_ptr += 0x200;
}
答案 1 :(得分:0)
你不能添加两个指针。您可以做的是递增指针所持有的地址。移除(unsigned char *)
演员。
如果您有兴趣,请详细了解指针算术here。