On Thu, 10 Jul 2003, Luigi Rizzo wrote: LR> LR>Hi, LR>in several places in ipfw2.c i have to move pointers across LR>structures of variable length (lists of ipfw2 instructions LR>returned by the getsockopt()), and i use the following type of code: LR> LR> void *next; LR> foo *p; LR> LR> ... LR> LR> next = (void *)p + len; LR> ... LR> foo = (foo *)p + len; LR> LR>When using WARNS=5, the compiler in -current flags them with 'Warning LR>void * arithmetic'. LR> LR>What is the best way to do the above given that i do need to use LR>these variable-size structures ?
Because sizeof(char), sizeof(unsigned char) and sizeof(signed char) all are defined to be 1 by the standard, any of them'll do it. Arithmetic on void pointers is undefined by the standard. next_foo = (struct foo *)((char *)this_foo + this_foo->len); provided that the object pointed to by this_foo is at least this_foo->len bytes long. harti -- harti brandt, http://www.fokus.fraunhofer.de/research/cc/cats/employees/hartmut.brandt/private [EMAIL PROTECTED], [EMAIL PROTECTED] _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "[EMAIL PROTECTED]"