Didier Kryn <[email protected]> writes: > 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).
[...] > 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". That's a habit based on an observation I made when I started to write code in C: Type qualifiers are left-associative (presumably a misuse of the term) unless there's nothing to the left of them, eg const char *s; declares a pointer to a constant string, char const *s; does the same and char * const s; declares a constant pointer to a non-constant string. If the qualifier is aways to the right of the thing it's supposed to qualify, it uniformly binds to what's left of it. [...] > It actually protects the string from being overwritten by the > function. Not really. It just asserts that the string won't be modified using this pointer. In theory, this would enable a compiler to optimize such accesses, eg, collapse many of them into one, however, in practice, gcc doesn't do that, and the qualifier is useless. _______________________________________________ Dng mailing list [email protected] https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng
