我正在尝试将C项目转换为C++。
在C项目中,我在编译为c++时解决了该错误:
以下代码给出了此错误:
#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++ 风格的强制转换允许您的代码的读者轻松地看到一个强制转换,并允许编译器强制执行您的强制转换的正确性。