Type Safe Generic Data Structures in C

See my follow-up article: “A Fast, Growable Array With Stable Pointers in C”

I write type safe generic data structures in C using a technique that I haven’t seen elsewhere<sup>1</sup>. It uses unions to associate type information with a generic data structure, but we’ll get to that. My approach works for any type of data structure: maps, arrays, binary trees… but for this article I illustrate the ideas by implementing a basic linked list. Since many people aren’t aware you can do C generics at all, I figured I’d start simple and build up to this: