The case, I am particularly interested in is:
#define A(x) \ ... \ if (...) { \ int SomeVariable = 1; \ ...; \ }
Here, SomeVariable never leaves the scope of the macro and at the same
time, it is very unlikely, that the macro code itself intended to use some
other declaration that is then shadowed by SomeVariable.
The patch currently disables -Wshadow for all declarations inside a
macro, but I am happy to make it stricter.