2013-05-16 17 views
12

Ho una struttura tcp_option_t, che è N byte. Se ho un puntatore tcp_option_t* opt, e voglio che venga incrementato di 1, non posso usare opt++ o ++opt in quanto questo incrementerà di sizeof(tcp_option_t), che è N.Come incrementare un puntatore di 1 byte, non 1 unità

Desidero spostare questo puntatore solo di 1 byte. La mia soluzione attuale è

opt = (tcp_option_t *)((char*)opt+1); 

ma è un po 'fastidioso. Ci sono dei modi migliori?

+0

Questo è probabilmente l'unica soluzione. – Yuushi

+5

Davvero non vuoi farlo ... o, forse, perché mai pensi di volerlo fare (perché davvero non vuoi farlo!)? –

+0

No, è esattamente il modo giusto per farlo. Ma perché vorresti? –

risposta

10

Ti suggerisco di creare un puntatore di carattere e usarlo per attraversare la tua struttura.

char *ptr = (char*) opt; 
++ptr; // will increment by one byte 

quando è necessario ripristinare nuovamente la struct, da PTR, basta fare il solito Cast:

opt = (tcp_option_t *) ptr; 
Problemi correlati