I\'ve noticed that sometimes, C macros are written as something like this:
#define foo(bar) ({ ++bar; })
After some experimentation, I\'ve
This is a GNU extension called statement expressions.
When declaring macros in standard-C, you often see do...while(0)
loops used for similar purposes (ie creating a block scope). A statement expression is superior to the loop hack because it can return a value. If you want to do something similar in standard-C, you'd have to define an additional function and lose the convenience of lexical scoping.