2013-04-10 19 views
5

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

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

Error[Pe513]: a value of type "void *" cannot be assigned to an entity of type "uint8_t *"

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

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

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

ответ

15

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

+0

хорошо спасибо за это !!! –

Смежные вопросы