Wann soll const void * verwendet werden?
Ich habe diese sehr einfache Testfunktion, mit der ich herausfinde, was mit dem const-Qualifier los ist.
int test(const int* dummy)
{
*dummy = 1;
return 0;
}
Dieser wirft mir einen Fehler mit GCC 4.8.3 zu. Doch dieser kompiliert:
int test(const int* dummy)
{
*(char*)dummy = 1;
return 0;
}
So scheint es, als ob das const-Qualifikationsmerkmal nur funktioniert, wenn ich das Argument verwende, ohne es in einen anderen Typ umzuwandeln.
or kurzem habe ich Codes gesehen, die @ verwendet
test(const void* vpointer, ...)
Zumindest für mich, wenn ich void * verwendet habe, neige ich dazu, es auf @ zu werfeverkohlen für Zeigerarithmetik in Stapeln oder zum Verfolgen. Wie kannconst void * verhindert, dass Unterprogrammfunktionen die Daten ändern, bei denen vpointer zeigt auf?