groctel

joined 2 years ago
[–] groctel@lemmy.world 1 points 2 days ago (1 children)

I have bad news for you

[–] groctel@lemmy.world 7 points 3 days ago* (last edited 3 days ago) (4 children)

At my previous workplace we had a C macro that was something like

#define CheckWhatever(x__, true__, false__) \
    whatever(x) ? (true__) : (false__)

I don't remember this shit, so I'm just paraphrasing cursed C. The question one would ask is... why? Well, because you also want to do

#define CheckWhatever2(x__, true__, false__) \
    CheckWhatever((x__ ##1), (true__), (false__)) \
    CheckWhatever((x__ ##2), (true__), (false__))

And, of course

#define CheckWhatever3(x__, true__, false__) \
    CheckWhatever2((x__ ##1), (true__), (false__)) \
    CheckWhatever2((x__ ##2), (true__), (false__))

Long story short, someone wanted to CheckWhatever6 inside another macro. While debugging code old enough to vote, my editor suggested expanding the macro, which expanded to ~1400 lines for a single ternary operator chain. Fun times!

[–] groctel@lemmy.world 3 points 3 days ago

Never forget your roots

(setq x (if (> y 5) :foo :bar))