c – 错误[Pe513]:无法将类型为“void *”的值分配给“uint8_t *”类型的实体

我试图将C项目转换为C语言.

在C项目中,我在编译成c时反击了这个错误

Error[Pe513]: a value of type “void *” cannot be assigned to an entity of type “uint8_t *”

以下代码给出了此错误

#define RAM32Boundary  0x20007D00
uint8_t *pNextRam;
pNextRam = (void*)RAM32Boundary;// load up the base ram

任何人都可以解释这在C中做了什么以及如何将其转换为C?

解决方法

C允许隐式转换为void *,而C不允许.你需要转换为正确的类型.

使用:

uint8_t *pNextRam;
pNextRam = (uint8_t*)RAM32Boundary;// load up the base ram

或者更好*,使用C风格的演员代替C风格:

uint8_t *pNextRam;
pNextRam = static_cast<uint8_t*>(RAM32Boundary);// load up the base ram

*在实践中,铸造是一个容易出错的来源. C样式强制转换允许代码的读者轻松查看强制转换,并允许编译器强制执行强制转换.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...