4 ms·
You mean: #define SQ(x) ((x)*(x))
by mgerdts 6y ago
You mean:
#define SQ(x) ((x)*(x))
- deleted 6y ago[deleted]
- monocasa 6y agoYeah, thanks. That's what I get for trying to type code on my phone.
- throwaway3neu94 6y agoThere's another pitfall: it evaluates a parameter twice. Imagine calling SQ(func_with_side_effects()). If you can assume a compiler with statement expressions and typeof (gcc, clang, probably icc in this case): #define SQ(x) ({ typeof(x) x_ = (x); x_ * x_ }) If not (MSVC++) then best of luck. Anyway I 100% agree people way, way overuse macros. Very often a static inline function is a better trade-off.