[gnu.gcc.bug] shadowing and macros and warnings.

rms@UUNET.UU.NET (Richard M. STALLMAN) (03/12/89)

If macros are written in the safest known way:
#define foo(a) ({ int __foo_a = (a); ... })
then as long as foo itself does not contain an accidental conflict
then there is no danger of causing one by using foo.
However, any use of the form foo (foo (a)) will result
in harmless shadowing of the internal variable __foo_a.

I think warnings about shadowing are a bad idea unless we
can recommend a generally applicable reasonable practice
which avoids provoking the warning.  It is a pain in the ass
to get a warning for something which does not have anything
wrong with it.