C на самом деле не имеет понятия об универсальных или обобщенных c программировании, однако есть несколько приемов, которые вы можете использовать.
Вы можете использовать указатели void, но они должны быть выделены достаточно большими для самая большая вещь, которую вы будете хранить в них, иначе вы просто получите доступ к тому месту, которое вам не нужно.
Другая вещь, которую вы можете использовать для программирования generi c -i sh, - это объединения, которые могут иметь различные варианты. рассмотрим следующий пример, который является одним из стандартных oop примеров полиморфизма
struct triangle {...}
struct rectange {...}
union shape {struct triangle *;struct rectange *;}
enum type {triangle,rectangle}
struct shape {union shape *s,enum type type} /* this is like an interface*/
size_t area(struct shape *shape){...}
, это выглядит утомительно, но может быть легко сгенерировано с помощью макроса