This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: A case for `void *' for pointers to arbitrary (byte) buffers
- From: Mark Kettenis <mark dot kettenis at xs4all dot nl>
- To: drow at false dot org
- Cc: gdb at sourceware dot org, cagney at gnu dot org, eliz at gnu dot org
- Date: Tue, 3 May 2005 23:13:24 +0200 (CEST)
- Subject: Re: A case for `void *' for pointers to arbitrary (byte) buffers
- References: <42710E90.3030300@gnu.org> <200504281919.j3SJJKF1011501@elgar.sibelius.xs4all.nl> <42715EE8.5070704@gnu.org> <01c54c8a$Blat.v2.4$ffbe8140@zahav.net.il> <42753958.70109@gnu.org> <01c54e92$Blat.v2.4$5cf24460@zahav.net.il> <42755FD4.8000009@gnu.org> <01c54f4a$Blat.v2.4$a9fc8500@zahav.net.il> <42778DE6.1080106@gnu.org> <200505032013.j43KD1dD005239@elgar.sibelius.xs4all.nl> <20050503202352.GA6424@nevyn.them.org>
Date: Tue, 3 May 2005 16:23:52 -0400
From: Daniel Jacobowitz <drow@false.org>
> Why not use `xxx_byte *' instead of `void *'?
> ---------------------------------------------
>
> * It's nonstandard. Why do we need a nonstandard type if a perfectly
> god standard type is available?
>
> * It doesn't really solve the issue. It only propagates the problem
> one level up or down. Since `xxx_byte *' is nothing but a typedef
> for `unsigned char *', someone calling a functions with `xxx_byte *'
> as one of its arguments with a `char *' argument will suffer from
> the warning that raised this entire issue; `void *' breaks the chain
> immediately.
I think that's a bad thing! For the same reason that we use -Werror:
where possible, we can let GCC enforce consistency within our source
base. Use of gdb_byte (as unsigned char) buys you the advantage that
any other pointer type won't silently convert to it.
Ah, but these are supposed to be opaque blobs of memory.
If you want to use a standard type, play the necessary autoconf games
to acquire stdint.h. Use uint8_t *.
That's an interesting suggestion. It might take a few iterations to
get that right though.
Mark