Unrue
25-03-2010, 10:09
Ciao a tutti,
ho una domanda sui puntatori void. Ovviamente non è possibile fare aritmetica dei puntatori sui void, o almeno non in modalità standard.
Io ho una funzione del genere: ( pseudocodice)
for ( i..)
funzione( &buffer[i]);
con buffer puntatore void e funzione che prende in ingresso un puntatore void.
Ora, ovviamente così non funziona in quanto mi dà il warning sull'aritmetica fatta sui puntatori void. Quindi al momento ho risolto facendo vari if e castando il puntatore void al tipo corrispondente, ad esempio:
gint32* punt_tmp;
if( tipo== gint32)
punt_tmp = (gint32*)buffer;
gpointer void_tmp;
for(i..)
void_tmp = &punt_tmp[i];
funzione( &void_tmp[i]);
Così funziona, Però mi chiedevo se ci fosse un metodo più furbo per fare ciò. Grazie in anticipo. :)
ho una domanda sui puntatori void. Ovviamente non è possibile fare aritmetica dei puntatori sui void, o almeno non in modalità standard.
Io ho una funzione del genere: ( pseudocodice)
for ( i..)
funzione( &buffer[i]);
con buffer puntatore void e funzione che prende in ingresso un puntatore void.
Ora, ovviamente così non funziona in quanto mi dà il warning sull'aritmetica fatta sui puntatori void. Quindi al momento ho risolto facendo vari if e castando il puntatore void al tipo corrispondente, ad esempio:
gint32* punt_tmp;
if( tipo== gint32)
punt_tmp = (gint32*)buffer;
gpointer void_tmp;
for(i..)
void_tmp = &punt_tmp[i];
funzione( &void_tmp[i]);
Così funziona, Però mi chiedevo se ci fosse un metodo più furbo per fare ciò. Grazie in anticipo. :)