coja@lemmy.ml to Programmer Humor@lemmy.ml · 1 year agoFind yourselflemmy.mlimagemessage-square105fedilinkarrow-up1646arrow-down129
arrow-up1617arrow-down1imageFind yourselflemmy.mlcoja@lemmy.ml to Programmer Humor@lemmy.ml · 1 year agomessage-square105fedilink
minus-squareEufalconimorphlinkfedilinkarrow-up21·1 year ago#define max(x,y) ( { __auto_type __x = (x); __auto_type __y = (y); __x > __y ? __x : __y; }) GNU C. Also works with Clang. Avoids evaluating the arguments multiple times. The optimizer will convert the branch into a conditional move, if it doesn’t I’d replace the ternary with the “bit hacker 2” version.
minus-squareEufalconimorphlinkfedilinkarrow-up1·1 year ago__auto_type is a compiler builtin, not a library function. It’s not a function at all, the parentheses are for precedence & grouping.
#define max(x,y) ( { __auto_type __x = (x); __auto_type __y = (y); __x > __y ? __x : __y; })
GNU C. Also works with Clang. Avoids evaluating the arguments multiple times. The optimizer will convert the branch into a conditional move, if it doesn’t I’d replace the ternary with the “bit hacker 2” version.
deleted by creator
__auto_type
is a compiler builtin, not a library function. It’s not a function at all, the parentheses are for precedence & grouping.