2013-04-10 16 views
5

Tôi đang cố gắng chuyển đổi dự án C thành C++.Lỗi [Pe513]: không thể chỉ định giá trị loại "void *" cho thực thể thuộc loại "uint8_t *"

Trong dự án C Tôi phản đối lỗi này khi biên dịch thành C++:

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

Các mã sau đây cho lỗi này:

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

bất cứ ai có thể giải thích điều này đang làm trong C và làm thế nào để chuyển đổi nó thành C++?

Trả lời

15

C cho phép chuyển đổi tiềm ẩn đến/từ void*, trong đó C++ thì không. Bạn cần truyền tới loại đúng loại.

Sử dụng:

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

Hoặc vẫn tốt hơn *, sử dụng C++ phong cách đúc thay vì phong cách C .:

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

* Trong thực tế, đúc là một nguồn dễ dàng lỗi. C++ kiểu phôi cho phép người đọc mã của bạn dễ dàng nhìn thấy một dàn diễn viên cho phép trình biên dịch thực thi tính chính xác của dàn diễn viên của bạn.

+0

cũng cảm ơn bạn vì điều này !!! –