приготовьтесь к вопросу немного "скрученным"...
В прошлом я реализовал много структуры данных (дерево, список, хеш-таблицу, график), используя макрос, я могу реализовать некоторый вид o generic. Однако я блуждал, если можно реализовать общую структуру данных с помощью указателя void, но каким-то образом я хотел бы иметь возможность использовать typecheking...
Я не знаю, ясно ли, что я пытаюсь сказать... но в принципе я не думаю, что всегда безопасно ставить "void *" как общий, в то же время я не думаю, всегда полезно использовать макрос как способ создания общей структуры данных (так как в основном то, что делает препроцессор с макросом, это замена кода), потому что если вы посмотрите вокруг Интернета, вы можете найти такие примеры.
Хорошей идеей может быть, на мой взгляд, но, вероятно, я не прав, это использовать макрос для создания стандартного интерфейса для данных, хранящихся в структуре данных, среди функций интерфейса я бы поставил код для правильного типа проверяя, учитывая пустоту *. Вдохновленный инженером-разработчиком программного обеспечения, это может быть хорошим способом продолжить.
Конечно, верно, что для слишком сложного материала было бы лучше переключить язык (С++/Java), но даже верно, что это не всегда возможно.
Итак, вкратце... как обычно обрабатывается проблема "generic" в C? я полагаюсь на ваш опыт для ответа!