[Bug c++/70922] -Wparentheses warning should not complain about if-else from macro expansion
manu at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed May 4 18:55:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70922
--- Comment #15 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
Indeed, we also warn for
void bar(int x)
{
if (x)
for (int i = x; i < 5; i++)
if (i != 0)
{
/* Nothing. */
}
else
if(!x)
return;
}
Perhaps we should not warn if some other construct breaks the ambiguity (like
for, while, etc.). But I can see that one may wrongly write:
void bar(int x)
{
if (x)
MACRO_WITH_ELSE(x)
if(!x)
return;
}
and not be aware that the macro changes the meaning of the following 'if'. The
extra braces may seem redundant, but they avoid such pitfalls:
void bar(int x)
{
if (x)
{
MACRO_WITH_ELSE(x)
if(!x)
return;
}
}
More information about the Gcc-bugs
mailing list