我正在定义一个从0x20000开始的内存指针
char * Flash_ptr = (char *) 0x20000;
因此我收到了警告(#173-D无效的类型转换),但如果我将地址 - 例如 - 减少到0x1800,警告消失,我试图将其定义为无符号,但它没有帮助,任何其他建议?并且有人可以向我解释为什么会这样吗?
答案 0 :(得分:-1)
我发现了here:
您也可以通过首先将函数指针强制转换为可以完全保存值的整数类型来避免错误(在stdint.h中定义的uintptr_t'是用于此类的标准typedef)然后施放到较小的类型。同样,这将生成截断警告:
mrCla.MVECT1 =(无符号)((uintptr_t)Cla1Task1 - (uintptr_t)& Cla1ProgStart));
如果您使用uintptr_t
代替char *
,它可能会照顾它。