2013-04-10 20 views
5

Ich versuche, ein C-Projekt in C++ zu konvertieren.Fehler [Pe513]: ein Wert vom Typ "void *" kann keiner Entität vom Typ "uint8_t *" zugewiesen werden

In der C-Projekt, das ich diesen Fehler begegnet, während in c Kompilieren ++:

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

Der folgende Code gibt diesen Fehler:

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

Kann mir jemand erklären, was dies in C tut und wie man in C++ konvertieren?

Antwort

15

C ermöglicht implizite Konvertierungen zu/von void*, was C++ nicht tut. Sie müssen in den korrekten Typ umwandeln.

Verwendung:

uint8_t *pNextRam; 
pNextRam = (uint8_t*)RAM32Boundary;// load up the base ram 

Oder noch besser *, verwenden Sie einen C++ Stil anstelle von C-Stil gegossen .:

uint8_t *pNextRam; 
pNextRam = static_cast<uint8_t*>(RAM32Boundary);// load up the base ram 

* In der Praxis Gießen eine einfache Fehlerquelle ist. C++ - Style-Umwandlungen ermöglichen es einem Leser Ihres Codes, problemlos einen Cast und zu sehen, damit der Compiler die Korrektheit Ihrer Besetzung durchsetzen kann.

+0

gut danke dafür !!! –

Verwandte Themen