Поскольку невозможно иметь переменную неизвестного типа в C, в этом нет необходимости. Не существует эквивалента id
для типов C. Можно иметь void-указатель на память, чей предполагаемый тип вы не знаете, но он должен быть приведен к указателю на определенный тип, чтобы на самом деле иметь какой-либо конкретный тип - до тех пор это просто адрес. 1002 *
Есть места, где полезнее было бы больше полиморфизма, но у C его просто нет.
(* Примечание: я не принимаю во внимание союзы, поскольку они принадлежат к одному типу, и реальный вопрос в том, какой тип вы хотите выбрать из него.)