• ZILtoid1991@lemmy.world
    link
    fedilink
    arrow-up
    16
    ·
    2 months ago

    That’s why I primarily use booleans in return parameters, beyond that I’ll try to use bitfields. My game engine’s tilemap format uses a 32 bit struct, with 16 bit selecting the tile, 12 bit selecting the palette, and 4 bit used for various bitflags (horizontal and vertical mirroring, X-Y axis invert, and priority bit).

    • acockworkorange@mander.xyz
      link
      fedilink
      arrow-up
      25
      ·
      2 months ago

      Bit fields are a necessity in low level networking too.

      They’re incredibly useful, I wish more people made use of them.

      I remember I interned at a startup programming microcontrollers once and created a few bitfields to deal with something. Then the lead engineer went ahead and changed them to masked ints. Because. The most aggravating thing is that an int size isn’t consistent across platforms, so if they were ever to change platforms to a different word length, they’d be fucked as their code was full of platform specific shenanigans like that.

      /rant

      • ulterno@programming.dev
        link
        fedilink
        English
        arrow-up
        3
        ·
        2 months ago

        Yeah. I once had to do stuff to code that had bit-fields like that and after a while, realised (by means of StackOverflow) that that part is UB and I had to go with bitwise operations instead.

      • Croquette@sh.itjust.works
        link
        fedilink
        arrow-up
        2
        ·
        2 months ago

        I always use stdint.h so that my types are compatible across any mcu. And it makes the data type easily known instead of guessing an i t size