我正在尝试将C项目转换为C ++。
在C项目中,我在编译成c ++时反击了这个错误:
错误[Pe513]:类型为“void *”的值无法分配给“uint8_t *”类型的实体
以下代码给出了此错误:
#define RAM32Boundary 0x20007D00
uint8_t *pNextRam;
pNextRam = (void*)RAM32Boundary;// load up the base ram
任何人都可以解释这在C中的作用以及如何将其转换为C ++吗?
答案 0 :(得分:17)
C允许对void*
进行隐式转换,而C ++则不然。您需要转换为正确的类型。
使用:
uint8_t *pNextRam;
pNextRam = (uint8_t*)RAM32Boundary;// load up the base ram
或更好* * / / strong>,使用C ++样式转换而不是C样式。:
uint8_t *pNextRam;
pNextRam = static_cast<uint8_t*>(RAM32Boundary);// load up the base ram
*在实践中,施法是一个容易出错的来源。 C ++样式转换允许代码的读者轻松地看到强制转换和允许编译器强制执行转换的正确性。