8

我正在尝试将 C 项目转换为 C++。

在 C 项目中,我在编译成 c++ 时解决了这个错误:

错误[P​​e513]:“void *”类型的值不能分配给“uint8_t *”类型的实体

下面的代码给出了这个错误:

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

谁能解释这在 C 中做了什么以及如何将其转换为 C++?

4

1 回答 1

18

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++ 风格的强制转换使代码的读者可以轻松地看到强制转换,允许编译器强制强制转换的正确性。

于 2013-04-10T22:05:56.127 回答