Re: [PATCH 1/5] add SWAP macro
From: Brandon Williams <hidden>
Date: 2017-01-30 22:22:04
On 01/30, René Scharfe wrote:
Am 30.01.2017 um 22:03 schrieb Johannes Schindelin:quoted
It is curious, though, that an expression like "sizeof(a++)" would not be rejected.Clang normally warns about something like this ("warning: expression with side effects has no effect in an unevaluated context [-Wunevaluated-expression]"), but not if the code is part of a macro. I don't know if that's intended, but it sure is helpful in the case of SWAP.quoted
Further, what would SWAP(a++, b) do? Swap a and b, and *then* increment a?That might be a valid expectation, but GCC says "error: lvalue required as unary '&' operand" and clang puts it "error: cannot take the address of an rvalue of type". René
Perhaps we could disallow a side-effect operator in the macro. By disallow I mean place a comment at the definition to the macro and hopefully catch something like that in code-review. We have the same issue with the `ALLOC_GROW()` macro. -- Brandon Williams