863
you are viewing a single comment's thread
view the rest of the comments
[-] perviouslyiner@lemmy.world 241 points 9 months ago* (last edited 9 months ago)

define it as ( __LINE__ % 10) so that the problem goes away when you add a debug statement

[-] Prunebutt@slrpnk.net 41 points 9 months ago

Can someone ELI5 what this does?

[-] yggdar@lemmy.world 85 points 9 months ago* (last edited 9 months ago)

That exact version will end up making "true" false any time it appears on a line number that is divisible by 10.

During the compilation, "true" would be replaced by that statement and within the statement, "__LINE__" would be replaced by the line number of the current line. So at runtime, you end up witb the line number modulo 10 (%10). In C, something is true if its value is not 0. So for e.g., lines 4, 17, 116, 39, it ends up being true. For line numbers that can be divided by 10, the result is zero, and thus false.

In reality the compiler would optimise that modulo operation away and pre-calculate the result during compilation.

The original version constantly behaves differently at runtime, this version would always give the same result... Unless you change any line and recompile.

The original version is also super likely to be actually true. This version would be false very often. You could reduce the likelihood by increasing the 10, but you can't make it too high or it will never be triggered.

One downside compared to the original version is that the value of "true" can be 10 different things (anything between 0 and 9), so you would get a lot more weird behaviour since "1 == true" would not always be true.

A slightly more consistent version would be

((__LINE__ % 10) > 0)
[-] BananaOnionJuice@lemmy.dbzer0.com 39 points 9 months ago

If the error is too frequent it will be hunted down very fast, what you want is errors that happen no more than once every month, maybe add another level that ensures this only triggers based on the running time.

load more comments (2 replies)
load more comments (6 replies)
load more comments (16 replies)
this post was submitted on 09 Feb 2024
863 points (97.6% liked)

Programmer Humor

19594 readers
842 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS