4 ms·
With a couple of minor exceptions, C++ is a superset of C.
by ectoplasm 11y ago
With a couple of minor exceptions, C++ is a superset of C.
- halosghost 11y agoIt's not just a couple. There are a large variety of things in C that Cxx does not support at all (e.g., VLAs and _Generic), and many more things that, though they are in both languages behave very differently (e.g., sizeof). It's fine for people to like Cxx, but I do wish we could stop perpetuating the falsehood that C is just a subset of Cxx. Cxx, when it started was a pure superset of C, but that is no longer the case.
- ectoplasm 11y agoAlright, I'll rephrase. There are a zillion differences, but with a couple of minor exceptions, there is very little C++-incompatible C that cannot be straightforwardly expressed as C++-compatible C. I mean, gcc -Wall even turns on -Wc++11-compat and -Wc++14-compat now. Also, sizeof doesn't behave differently, the arguments that get passed to sizeof are different in a few cases, e.g. sizeof('x'). See Annex C: http://www.lcdf.org/c%2B%2B/clauseC.html http://www.lcdf.org/c%2B%2B/clauseC.html
- deleted 11y ago[deleted]
- vortico 11y agoHowever, with all the "great" features of C++ like templates, RAII, and overloading, programmers use and abuse every corner of them to build overly complicated ways to basically create domain-specific languages. It happens in over half of the C++ libraries I've used, otherwise they would just make their API in C.