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.