我正在尝试将 C 项目转换为 C++。
在 C 项目中,我在编译成 c++ 时解决了这个错误:
错误[Pe513]:“void *”类型的值不能分配给“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++ 风格的强制转换使代码的读者可以轻松地看到强制转换,并允许编译器强制强制转换的正确性。