I love C and I prefer it in many cases (over C++) but C++ proved to result in a bit cleaner and more robust API than it would have been in C.

In fact I have initially coded Tiny2D in C but switched to C++ later on. The main reason for that was automatic destruction of objects via destructor. The only little thing I don't like about Tiny2D interface now is that you still see an internal private pointer inside of the class' declaractions (see the main header file https://github.com/macieks/Tiny2D/blob/master/Include/Tiny2D.h ) - e.g. MaterialObj* obj inside of Material. Ideally I'd like to hide that from the user. In C, it wouldn't have been an issue. But overall I think this is very minor.

Well i will not tell you nothing interesting, I just prefer c as language and c libs over c++ libs.

I never used c++ style lib from c - do you think that using it

from c would be hard? could you maybe explain a bit?

Many compilers allow you to mix C with C++. Since C is a mostly just a subset of C++, you can have all of your code in C if you like and still use Tiny2D which is in C++. You just have to tell the compiler that the files using Tiny2D shall be compiled with C++, not C, compiler - typically you just need to set their extension to .cpp instead of .c

Many compilers allow you to mix C with C++. Since C is a mostly just a subset of C++, you can have all of your code in C if you like and still use Tiny2D which is in C++. You just have to tell the compiler that the files using Tiny2D shall be compiled with C++, not C, compiler - typically you just need to set their extension to .cpp instead of .c

Many compilers allow you to mix C with C++. Since C is a mostly just a subset of C++, you can have all of your code in C if you like and still use Tiny2D which is in C++. You just have to tell the compiler that the files using Tiny2D shall be compiled with C++, not C, compiler - typically you just need to set their extension to .cpp instead of .c

Not quite. You can mix C with your C++ source and compile as C++ mostly as-is (excepting a few corner cases), but it doesn't work the other way unless you have a C interface in the C++ headers. Take a look at SFML for an example of what I mean. It's usable from C, but only through the CSFML API, which wraps the C++ API. A C interface is also useful for creating bindings to other languages. The C ABI and calling convention is about as universal as you can get, something that is not true of C++.