To be fair, compiling C code with a C++ compiler gets you all the warnings from C++'s strong-typing rules. That’s a big bonus for me, even if it only highlights the areas of your C that are likely to become a maintenance hazard - all those void*
casts want some documentation about what assumptions make them safe. Clang will compile variable-length arrays in C++, so you might want to switch off that warning since you’ve probably intended it. Just means that you can’t use designated initialisers, since C++ uses constructors for that and there’s no C equivalent. I’d be happy describing code that compiles in either situation as “C+”.
Also stops anyone using auto
, constexpr
or nullptr
as variable names, which will help if you want to copy-paste some well-tested code into a different project later.
I think even when the companies have a bit of money, they tend to go overboard. I think eg. Baldur’s Gate 3 is actually so long that it’s problematic, I would have been quite happy with it at 2/3rds the length it is. Even worse would be something like Pillars of Eternity 2 - it’s great, but it goes on forever and didn’t make any money. There’s too much of it.
Give us more games like Disco Elysium. Not that long, tonnes of replayability, and more importantly, it’s different. Really different. And the “moral choices” actually mean something.