[Edward C. Jones] > I use Gentoo 1.4 Linux with gcc 3.2.2. The C program given below gives > the following compiler message: > > silly.c: In function `silly': > silly.c:5: warning: suggest explicit braces to avoid ambiguous `else' > > I doubt if there is any bug in Py_DECREF. But would it be possible to > jiggle the Py_DECREF macros to suppress this message? In my real code, > I, of course, just added braces. Sounds good to me (i.e., add the braces and be done with it). It's a silly warning because Py_DECREF expands to a two-branch if/else, and there is no ambiguity in reality. It would be a refreshing change if someone suggested that gcc change instead <wink>. [Timothy Delany] > If you mean you changed it to: > > static PyObject* silly(PyObject* obj, PyObject *args) > { > if (1) > { > Py_DECREF(Py_None); > } > > then I would say that's the right thing to do - all the > time, in all code. [Skip Montanaro] > Then you also agree we should bracify the Py_*REF macros, right? > <wink> That can't work, alas -- the macro has no idea whether curly braces are syntactically legal in the context it's invoked in. Timmy *can* know that, and insert them or not accordingly. 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>.
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