2016-05-26 13 views
3

Ich arbeite mit einem C-Projekt mit Visual Studio. Ich habe versucht, den folgenden Code zu kompilieren:Fehler C2036: 'void *': unbekannte Größe

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

bekomme ich folgende Fehler mit Visual Studio Compiler:

error C2036: 'void *' : unknown size 

Der Code kompiliert und mit GCC. Wie kann ich diesen Fehler beheben?

+1

Aber Sie sind sicher, dass Sie mit einem C-Compiler kompilieren? –

+0

Ja, es ist entfernt. – ProEns08

+3

Sie können jedoch Zeiger des Typs void nicht indexieren. Sie können versuchen, es in char umzuwandeln, so dass jedes Inkrement von einem Byte ist –

Antwort

5

Sie können Zeigerarithmetik nicht auf void * ausführen, da void keine definierte Größe hat.

Wirf den Zeiger auf char * und es wird wie erwartet funktionieren.

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

Danke, +1. Sehr hilfreich. – ProEns08