How to write type-safe generics in C
7 days ago
- #generics
- #C programming
- #macros
- C can implement generics using various methods like function-like macros, void pointers, and dispatch specializations.
- Recommended approach uses header instantiation for type safety, minimal macros, and linker deduplication.
- Macro trick `G(name)` appends type suffixes to function and struct names for specialization.
- Header instantiation requires defining `VEC_ITEM_TYPE` and optionally `VEC_SUFFIX`.
- Implementation avoids redeclaration errors by conditionally including definitions with `VEC_IMPLEMENTATION`.
- Multiple includes for different types are managed by undefining `VEC_ITEM_TYPE` and `VEC_SUFFIX` after use.
- Example shows a generic vector implementation with functions like `vec_push` and `vec_pop`.