Типобезопасные обобщённые структуры данных на C через union и тернарный оператор
Type Safe Generic Data Structures in C

Автор показывает, как реализовать типобезопасные обобщённые структуры данных на C, используя union с параметризованным типом payload и тернарный оператор для проверки типов на этапе компиляции. Подход работает для любых структур — от связных списков до хеш-таблиц — и не требует макросов, раздувающих бинарник. В статье разбираются три уровня обобщённости: void*, встроенное хранение через flexible array member и финальная типовая проверка, а также нюансы с typeof и typedef.
Макросы имеют плохую репутацию, но, на мой взгляд, это довольно понятно.