| Re: [AD] The details of 'const' |
[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]
In reply to Ben Davis <ben@xxxxxxxxxx>:
>Hence, at least in DJGPP, it *is* possible to tell the compiler exactly
>what we mean. In this case, we want a pointer to a variable pointer to a
>constant string, so "const char **" is fine for ugetx(). It just means
>that the string is constant; not the pointer.
This isn't the same; that was why I introduced ugetxc() in the first
place. Don't you get a warning/error when you try to compile the
following code?
int test(const char* p)
{
return ugetx(&p);
}
The *reason* is this: if you pass a ptr-to-ptr-to-char to a function
expecting a ptr-to-ptr-to-const-char, then that function *might* set the
ptr-to-ptr to point at some const char data. Then, when the function
returns, the code executed after the function doesn't see that char data
as const-qualified. Hence the error.
Also, you can look in the C FAQ-list, which tells you that the process
by which non-const data can be passed to a const-function only goes down
one level, although it doesn't explain why.
Bye for now,
--
Laurence Withers, lwithers@xxxxxxxxxx
http://www.lwithers.demon.co.uk/
Attachment:
signature.asc
Description: PGP signature
| Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |