Ошибка [Pe513]: значение типа «void *» не может быть присвоен объекту типа «uint8_t *»

Я пытаюсь преобразовать проект C в C ++.

В проекте C я противостоял этой ошибке при компиляции в c ++:

Ошибка [Pe513]: значение типа «void *» не может быть присвоено объекту типа «uint8_t *»

Следующий код дает эту ошибку:

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

Может кто-нибудь объяснить, что это делает в C и как преобразовать его в C ++?

6

Решение

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 ++ позволяют читателю вашего кода легко увидеть приведение а также позволить компилятору обеспечить правильность вашего приведения.

16

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]