

Ease of adoption, if I’m not mistaken (so I was told 20-ish years ago when I started learning C++). Think back to the early/mid '90s - there was a lot of existing C code out there back then, people really didn’t want to throw it away but had few options if they wanted to use something else. C compatibility offered a way for large companies to incrementally adopt C++. All you had to do was change your compiler and your existing C code would compile, and you could write new stuff in C++. In the mean time, other languages could only leverage that existing code by using message passing or FFI-like frameworks. For example, you would have to use JNI if you were writing Java I think - maybe there were other options, but it was a big pain to deal with at the time, especially since tooling was probably not as polished back then.
Maybe it’s not as much of an issue today, but they have to maintain compatibility with earlier versions, so while it helped adoption a lot, it also is a big challenge for the language and its ability to move forward.






Agreed, they probably are cheap garbage (I myself don’t know, I haven’t driven cars regularly in a while), but two things:
Manufacturing volume is really important in making cars. You need know-how, you need experts and ways to make things better and deliver incremental improvements, and that becomes a lot easier when you have higher volumes.
People don’t have lots of cash to burn these days - quality is easy to sacrifice when you don’t have the cash to pay up.