Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
Maybe you don't understand this because you've never worked with a large codebase. but the reasons why many projects choose to use C instead of c++ are many. 1: Using c++ will make you lose compatibility with many powerful libraries, mujs (javascript interpreter) only works in pure C, sha256 only works in pure C, if I'm not mistaken, lua too. 2: Using c++ will make you lose compatibility with many C functions, this lib which is a garbage collector that I created: https://github.com/OUIsolutions/Universal-Garbage-Colector I had to do a lot of juggling to make it work in c++, since c++ doesn't support clojures, and c++'s strict typing makes it very difficult to convert complex types, like vtabs for example. 3 Using c++ will make you have to deal with a series of confusing libraries, which are very difficult to maintain if you were not involved in the original project. 4: Building dlls in c++ is horrible, in a few minutes I build a dll in C, and I can call a C function via python, lua, or any language I want, the same in c++ is much more difficult .
Funny enough, I recently (just last week) published a project using a style very similar to what you are describing in your article. The project is called lib: A C library for easy and fun string manipulation. I my case, however, the structure's definition is done in the implementation file, in order to create an abstract type whose members are private (at least, they try to be private; it's always possible to get them).