2013-04-10 51 views
5

CプロジェクトをC++に変換しようとしています。 C++にコンパイルしている間、私はこのエラーを対抗Cプロジェクトでエラー[Pe513]:タイプ "void *"の値を "uint8_t *"タイプのエンティティに割り当てることができません

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

この度はありがとうございます! –

関連する問題