C11 added _Generic to language, but turns out metaprogramming by inhumanely abusing the preporcessor is possible even in pure C99: meet Metalang99 library.
I'm actually working on a library doing just that! It's still in very (very) early development, but maybe someone may find it to be interesting. [1]Link [2] is the implementation of a vector. Link [3] is a test file implementing a vector of strings.
[1]: https://github.com/jenspots/libwheel
[2]: https://github.com/jenspots/libwheel/blob/main/include/wheel...
[3]: https://github.com/jenspots/libwheel/blob/main/tests/impl/st...