martin at v.loewis.de (Martin v. Löwis) writes: > "Zack Weinberg" <zack at codesourcery.com> writes: > >> > This is what leads to the bletcherous >> > >> > do { >> > the real macro guts go here >> > } while(0) >> > >> > form of macro definition. Py_DECREF could be rewritten in that form -- but >> > I've puked enough for one day <splat>. >> >> Should, not just could. Yeah, it's bletcherous, but it's the only >> way to be sure. (Short of inline functions.) > > Not true. As Tim explains, there is no possible application of the > macro which gets misinterpreted. We don't have a single if-statement, > we have an if-else-statement in the macro. That never leads to the > dangling else problem. It does, however, lead to a different problem: if (condition) Py_DECREF (foo); else // oops, syntax error here ... In general I consider it appropriate to wrap _all_ macros that don't return a value in do { ... } while (0), because that way you don't have to worry about which of them truly need it. zw
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4