Самое интересное в таком языке программирования, как C, заключается в том, что, хотя этот язык напрямую не поддерживает многие функции, включая объектно-ориентированное программирование и обобщенные методы, ничто не мешает вам реализовать эти функции на C. Это распространяется на что-то вроде типобезопасных обобщений в C, как демонстрирует [Raph] в своем блоге.
После ознакомления с различными способами реализации обобщений с использованием методов, включая базовые макросы препроцессора и указатели void, представлен продемонстрированный метод. Хотя этот метод и не обязательно является новым, преимущество его в том, что он типобезопасен. Как и в случае с шаблонами C++, эти обобщенные методы оцениваются во время компиляции, при этом препроцессор обрабатывает как проверку типов, так и заполнение нужных фрагментов шаблона. Несмотря на некоторую многословность, он может быть сведен в один заголовочный файл, не зависит от типа void или указателей и может быть дедуплицирован компоновщиком, предотвращая раздувание. Если дженерики — это то, что вы ищете в своем проекте на C, это может быть приемлемым решением.