:: Re: [DNG] "Common knowledge?"-quest…
Inizio della pagina
Delete this message
Reply to this message
Autore: Hendrik Boom
Data:  
To: dng
Oggetto: Re: [DNG] "Common knowledge?"-question
On Sat, Jan 23, 2016 at 04:45:05PM +0100, Didier Kryn wrote:
> Le 23/01/2016 12:16, Didier Kryn a écrit :
> >
> >    I'm curious of the reason why you specify
> >   static void print_start(char const *name, char const *what)

> >
> >    This means the pointers to the arrays of characters are
> >constant (not the characters). The effect of this cannot be to
> >protect the pointers in the caller program since they are passed
> >by value -- copied into register or stack before passing control
> >to the function. If it is for the sanity of the function itself,
> >then congratulations, this is a sane thing to do, even if it is
> >easy to check by eye that the pointers aren't modified. But, to be
> >consistent, since your function doesn't even modify the content of
> >the strings, you should also declare constant the characters
> >themself, like in the following:
> >    static void print_start(const char const *name, const char
> >const *what)

>
>     Sorry, I overlooked the code and read "char const *name" as if
> it was "char * const name". Actually the syntax you used is
> equivalent to "const char *name". It actually protects the string
> from being overwritten by the function.


I've always said the C syntax for declarators was confusing.
Even those who understand it read it wrong!

(Yes, In understand the logic behind it. It is still confusing.)

-- hendrik