Hasty Briefsbeta

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`.