you are viewing a single comment's thread
view the rest of the comments
[–] 7 points 11 months ago* (1 child)

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!

  • source
  • hideshow 2 child comments
  • [–] [S] 3 points 11 months ago (2 children)

    yeah... yikes. c is a beautiful language but thing like these are why macros may be it's largest blemish. hope that codebase doesn't keep planes flying!

  • source
  • parent
  • hideshow 4 child comments
  • [–] 2 points 11 months ago* (last edited 11 months ago)

    For all its faults, I think what makes C beautiful is that it gives you complete freedom do be an absolute idiot.

    Whenever I decide to hack something together with an arcane macro, I feel like an animal being released back into the wild, with the (pre-)compiler yelling "Be free! Explore the mysteries of our incomprehensible world!"

  • source
  • parent