News for hackers. Stuff that matters.
Re:Type-safe generic data structures in C by throwaway3neu94 on Saturday April 10, 2021 @02:24PM (#26763712)
There'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.

There are no comments on this comment yet.