this post was submitted on 21 Nov 2023
413 points (96.8% liked)

Programmer Humor

32361 readers
357 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[โ€“] lobsticle@lemmy.world 60 points 11 months ago (3 children)

Very disappointing not to see an #if 0 (my personal go-to for decades) in this meme. ๐Ÿ˜ž

[โ€“] SpaceNoodle@lemmy.world 25 points 11 months ago (1 children)

Damn, you beat me to it.

It's common enough that it's supported like a comment by numerous syntax highlighting schemes, and has the added benefits of guaranteeing that the code won't be compiled as well as encapsulating any pre-existing block comments. Conversely, if (false) is total garbage.

[โ€“] Duralf@lemmy.world 14 points 11 months ago (3 children)

If (false) is good because it is compiled so it doesn't get stale.

[โ€“] AlmightySnoo@lemmy.world 6 points 11 months ago* (last edited 11 months ago) (1 children)

A simple if (false) will get optimized out by any modern C or C++ compiler with optimizations on, but the problem is that the compiler will still parse and spend time on what's inside the if-block and it has to be legal code, whereas with the #if 0 trick the whole thing gets yeeted away by the preprocessor before even the compiler gets to look at it regardless of whether that block contains errors or not, it's literally just a string manipulation.

[โ€“] Duralf@lemmy.world 10 points 11 months ago (1 children)

I think you missed the whole point of my comment ๐Ÿ˜‚. Regardless, the time spent compiling a small snippet of code is completely negligible. In the end, both #if 0 and if (false) have their complimentary uses.

[โ€“] AlmightySnoo@lemmy.world -1 points 11 months ago (1 children)

Yeah, but I still think if (false) is silly because it adds an artificial constraint which is to make sure the disabled parts always compile even when you're not using them. The equivalent of that would be having to check that all the revisions of a single source file compile against your current codebase.

[โ€“] fushuan@lemm.ee 3 points 11 months ago

If(false) works in interpreted languages, the other one doesn't. It's stupid either way, that's what version control is for, but if we are doing the stupidness anyway, you can't use preprocessor flags in many languages because shit doesn't get compiled.

[โ€“] AceBonobo@lemmy.world 6 points 11 months ago (1 children)

"you're not wrong, you're just an asshole"

[โ€“] Duralf@lemmy.world 1 points 11 months ago

Fair enough, I do love being contrarian

[โ€“] pelya@lemmy.world 2 points 11 months ago

Tell this to my -Wall -Werror

[โ€“] AlmightySnoo@lemmy.world 3 points 11 months ago (1 children)

beat me to it too, it's a meme of course but the advantage compared to comments is thay you get syntax highlighting ๐Ÿ˜

[โ€“] KeenFlame@feddit.nu 2 points 11 months ago

My linter always skips preprocessors not set to build, in c# at least, greys it all out unfortunately

[โ€“] Magister@lemmy.world 2 points 11 months ago

this is what I'm doing too, so at least it's not compiled and better than a /* */ as you can keep all the code intact in your #if 0