On Fri, Jun 08, 2001 at 08:51:54AM -0400, Thomas David Rivers wrote:
> >
> > GCC complains when I try to initialize the structure with something like:
> >
> > struct validation_fun val_init[] = {
> > {"init", valfun_init, 0}
> > };
> >
> > This can be avoided by:
> >
> > struct validation_fun val_init[] = {
> > {(char *) (uintptr_t) "init", valfun_init, 0}
> > };
> >
> > ..but as a matter of fact, static, pre-initialized valfun structs are
> > the rule rather than the exception in this program, so having this
> > syntax for all of them seems.. well.. ugly :)
> >
>
> Ah.. I see..
>
> (I don't think you need (uintptr_t) - you can cast a (const char *)
> to a (char *) without having to go "through" that - I believe.)
Errrr.. this was the whole point of this thread. I *can't* cast
a (const char *) to a (char *) when using the -Wcast-qual gcc flag -
the -Wcast-qual flag produces exactly this type of warnings, to make
sure you don't treat const * pointers as normal pointers, and pass them
to functions that do stupid things like modify them or free them :)
> Is this C, or C++.. there are some differences in the type of
> a constant character string between the two...
>
> But - basically, what you are trying to describe is a field which
> is sometimes 'const' and othertimes isn't... which doesn't make
> sense in the context of the C standard... you'll need a cast
> for the initialization, or some other approach besides static
> initialization I believe... (or, just "live" with the warning...
> which isn't pleasant at all.)
Well, I can't live with the warning with -Werror ;) So I guess I'll
live with casting in free() :)
G'luck,
Peter
--
If wishes were fishes, the antecedent of this conditional would be true.
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message