LINUX.ORG.RU

История изменений

Исправление BreadFan, (текущая версия) :

void* - плохо. плюс, даже если мы все правильно кастанули, все равно приходим к исходной задаче.

представь развесистую иерархию типов с несколькими уровнями наследования. на каждом уровне надо валидировать конкретный сет полей. сишный код превратится череду switch, в которых, если не генерировать код, как предлагает анонимус, очень легко наделать ошибок. плюс без статик ассертов (они есть в С?) ты в этом коде не узнаешь, что добавился новый тип в иерархии или где-то опять про него забудешь.

Исходная версия BreadFan, :

void* - плохо. плюс, даже если мы все правильно кастанули, все равно приходим к исходной задаче.

представь развесистую иерархию типов с несколькими уровнями наследования. на каждом уровне надо валидировать конкретный сет полей. сишный код превратится череду switch, в которых, если не генерировать код, как предлагает анонимус, очень легко наделать ошибок. плюс без статик ассертов (они есть в С?) ты в этом коде не узнаешь, что добавился новый тип в иерархии и где-то опять про него забудешь.