【问题标题】:Error[Pe513]: a value of type "void *" cannot be assigned to an entity of type "uint8_t *"错误[P​​e513]:“void *”类型的值不能分配给“uint8_t *”类型的实体
【发布时间】:2013-04-02 23:18:04
【问题描述】:

我正在尝试将 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++ c embedded iar


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2019-03-27
      相关资源
      最近更新 更多