2016-05-26 17 views
3

私はVisual Studioを使用してCプロジェクトで作業しています。私は、次のコードをコンパイルしようとした:エラーC2036: 'void *':不明なサイズ

void shuffle(void *arr, size_t n, size_t size) 
{ 
     .... 
     memcpy(arr+(i*size), swp, size); 
     .... 
} 

私は、Visual Studioコンパイラで次のエラーを取得する:

error C2036: 'void *' : unknown size 

コードはGCCとうまくコンパイルします。このエラーを解決するには?

+1

しかし、あなたはCコンパイラでコンパイルしていると思いますか? –

+0

はい、削除されています。 – ProEns08

+3

しかし、void型のポインタをインデックス化することはできません。各インクリメントが1バイトになるようにcharにキャストしようとすることができます –

答えて

5

voidに定義されたサイズがないため、void *でポインタ演算を実行することはできません。

ポインタをchar *にキャストすると、期待どおりに動作します。

memcpy((char *)arr+(i*size), swp, size); 
+0

ありがとう、+1。非常に便利。 – ProEns08

関連する問題