This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
RE: Is it a Bug? (void*)
- From: Andrew Haley <aph at redhat dot com>
- To: "Duft Markus" <Markus dot Duft at salomon dot at>
- Cc: "Kevin P. Fleming" <kpfleming at starnetworks dot us>, <gcc-help at gcc dot gnu dot org>
- Date: Fri, 23 Mar 2007 15:46:53 +0000
- Subject: RE: Is it a Bug? (void*)
- References: <18597F2B47F1394A9B309945EC724112D3FE3A@servex01.wamas.com>
Duft Markus writes:
> Kevin P. Fleming <> wrote:
> > Glen Beane wrote:
> >> what about doing the conversion after incrementing the pointer?
> >>
> >> void *myptr = (void*)(otherptr + 1);
> >
> > Then the pointer will be incremented by sizeof(*otherptr), which could
> > be anything and is likely to not be '1 byte'.
>
> Yes, correctly...
>
> The thing is, i can cast to char*, but thats not the point. I just
> wanted to know if it's wanted that void=1byte with gcc -> it's not
> necessarily with other compilers. (it's not with microsoft's cl which
> i'm porting to ;o))
5.17 Arithmetic on `void'- and Function-Pointers
================================================
In GNU C, addition and subtraction operations are supported on pointers
to `void' and on pointers to functions. This is done by treating the
size of a `void' or of a function as 1.
A consequence of this is that `sizeof' is also allowed on `void' and
on function types, and returns 1.
The option `-Wpointer-arith' requests a warning if these extensions
are used.