Hi Paul,
> In controversial areas like this, we should look to the GNU coding standards
> for advice, and they state that one shouldn't cast to void, or use
> similar measures merely to satisfy a lint checker.
Let me quote the GCS explicitly:
"Don't make the program ugly to placate `lint'. Please don't insert
any casts to `void'. Zero without a cast is perfectly fine as a null
pointer constant, except when calling a varargs function."
Observe that:
1) The main intent of this paragraph is not "don't insert any casts to
'void'". It is "Don't make the program ugly to placate 'lint'."
The reason is that 'lint' was a rarely used tool, and not a GNU tool.
But here we are dealing with warnings from GCC, which is our _main_
compiler, for _everyday_ use, and a GNU tool also.
2) The second part of this paragraph
"Zero without a cast is perfectly fine as a null
pointer constant, except when calling a varargs function."
is not only clearly oldish - since it is common practice nowadays
to write NULL for the null pointer constant - but also factually
wrong: 0 is also different from NULL as an argument of the
'sizeof' operator.
In summary, I think you are going too far by applying this oldish paragraph
to the current situation. And it would be better to update the GCS so that
they give reasonable advice also for today's situations, otherwise they
become less and less relevant.
Bruno