2013-04-10 35 views
5

我试图将C项目转换为C++。错误[Pe513]:无法将类型“void *”的值分配给类型为“uint8_t *”的实体

在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++?

回答

15

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++风格转换允许您的代码阅读器轻松地看到一个转换允许编译器强制执行转换的正确性。

+0

很好,谢谢! – 2016-02-28 03:14:15

相关问题