> From: Joe Perches [mailto:joe@xxxxxxxxxxx] > Sent: Thursday, October 24, 2013 9:34 PM > > On Fri, 2013-10-25 at 03:52 +0000, Paul Zimmerman wrote: > > > From: Dan Williams > > > Sent: Thursday, October 24, 2013 12:45 AM > > > > > > On Thu, Oct 24, 2013 at 12:36 AM, Dan Williams <dan.j.williams@xxxxxxxxx> wrote: > > > > Permit list_for_each redifinitions like: > > > > > > > > #define for_each_connector_peer(peer, port, c) \ > > > > list_for_each_entry(peer, &(c)->ports, node) \ > > > > if (port != peer) > > > > > > > > ...which triggers: > > > > ERROR: Macros with complex values should be enclosed in parenthesis > > > > Kind of off-topic, but that macro looks a little dangerous. From what I have > > seen in the kernel, it's usually done something like this: > > > > #define for_each_connector_peer(peer, port, c) \ > > list_for_each_entry(peer, &(c)->ports, node) \ > > if (port == peer) {} else > > That seems pretty non-standard. > Look at include/linux/list.h or > $ git grep -E "\{\s*\}\s*else" > > Is there any effective difference? I fail to see your point. There are no similar constructs in list.h that I can see, and the output from git grep agrees with what I wrote. The difference is that with Dan's macro, this: if (foo) for_each_connector_peer(peer, port, c) bar(); else ... Will not interpreted by the compiler as the programmer intended. -- Paul -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html