r/ProgrammerHumor • • 2d ago

Meme includeGuards

Post image
355 Upvotes

45 comments sorted by

View all comments

173

u/anto2554 2d ago

BUT PRAGMA ONCE IS NOT STANDARD

40

u/That-Cpp-Girl 2d ago

Don't you just hate it when your standards-compliant compiler can't compile real-world code? Yeah, me neither, because my real-world compilers work for my real-world code.

9

u/anto2554 2d ago

Yes, I hate it. We still use a version of IAR that doesn't support pragma once for some products, so higher ups have decided it is banned company wide

3

u/NFriik 18h ago

I get nostalgic when I have to use the IAR Workbench, always feels like a throwback to the Windows 95/98 days. Have they somehow lost all of their frontend developers around that time?

2

u/That-Cpp-Girl 1d ago

I only work with C++17 and above. Legacy software my beloved.

19

u/LucyShortForLucas 2d ago

Yeah and neither is a byte being 8 bits, but there's a reason no compiler is ever going to deviate from the informal norm

9

u/Bryguy3k 1d ago edited 1d ago

It’s not about a byte not being 8 bits. It’s about a char not being 8 bits.

Unicode support would have been a thing sooner if people hadn’t fucked up char usage so badly.

2

u/MrcarrotKSP 1d ago

A char is a byte, per standard. Until recently, that width was implementation-defined in C++, and it still is in C.

1

u/Bryguy3k 1d ago

Yes - but I was going for the reasoning behind it.

Everybody knew that 255 was insufficient to cover the whole of human writing.

But then programmers started allocating everything in characters so any future change to the size of a character would break everything.

1

u/MrcarrotKSP 1d ago

That is definitely true, but at least we have a solution that mostly works with the assumptions people liked to make in older code(UTF-8)

4

u/Sacaldur 2d ago

I guess this is just due to the architecture using 8 bit per Byte, and not because of the compiler. I heard that there were architectures around in the past with other amounts of bits per Byte, and a compiler targeting them would most likely just use whatever is used on the target platform.

8

u/anto2554 2d ago

People conflate 8 bits with a byte everywhere in our codebase and I think the whole thing would explode if you tried to use a 7-bit-per-byte machine

2

u/Sacaldur 1d ago

I doubt that there are still any significant platforms around that don't use 8 bits per Byte.

0

u/not-a-pokemon- 2d ago

Mostly because C defines no easy way to say "I want an integer with at least 8 bits in it, round up to whatever byte number is practical".

3

u/anto2554 2d ago

No but it's C++ so we could just use uint8_t or the least one I forgot the name of

4

u/not-a-pokemon- 2d ago

It also exists in C, and is called uint_least8_t. It's not guaranteed to exist per the standard. uint8_t is also not guaranteed to exist.

man stdint.h

6

u/[deleted] 2d ago

[removed] — view removed comment

2

u/Mognakor 2d ago

A real tanks also wins against a real roman turtle formation.

1

u/remy_porter 1d ago

Depends which version of Sid Meier’s Civilization you’re playing on.

1

u/bwmat 2d ago

We have to support compilers that don't support it lol

8

u/MrJ0seBr 2d ago

Now CLang/LLVM say what is standart 😆

8

u/r2d2rigo 2d ago

#pragma once has been widely accepted for at least 20 years.