I had following C/C++ macro
#define fromA1R5G5B5(A,R,G,B,C) do { \
B = ((((C)>> 0)&0x1f)<<3)|0x7; \
G = ((((C)>> 5)&0x1f)<<3)|0x7; \
R = ((((C)>>10)&0x1f)<<3)|0x7; \
A = ((C)>>15)&1; \
} while (0)
and it fucked me up, when I wrote
fromA1R5G5B5(A, R, G, B, *Z++)
WTF? Cant they just allow gensyms?