This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/70922] -Wparentheses warning should not complain about if-else from macro expansion
- From: "manu at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 04 May 2016 18:54:50 +0000
- Subject: [Bug c++/70922] -Wparentheses warning should not complain about if-else from macro expansion
- Auto-submitted: auto-generated
- References: <bug-70922-4 at http dot gcc dot gnu dot org/bugzilla/>
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;
}
}