mustitz
Ну если очень хочется полиморфизму, а писать разрешено лишь на C89 универсальности для (например)?
Одно другому не мешает. Виртуальная функция это концепция. В С++ есть синтаксический сахар для упрощения реализации. В С его нет, поэтому приходится реализовывать ручками. В этом случае структуры содержат поля - указатели на функции, которые необходимо инициализировать при создании структуры.
Собственно говоря, понимание концепции
виртуальная функция просто поможет лучше понимать этот код. Потому как это будет уже не запутанные операции с указателями и вызов функций, а код, объединенный некоторой идеей.
-- 11.01.2013, 13:55 --ну должно же быть имя у неё!
В общем случае необязательно. Вполне можно выделить память, прописать ей атрибуты, сформировать ассемблерный код ручками и сделать вызов. Но это экзотика.
Вообще, если функция вызывается по указателю, то в разные моменты прохождения кода этот указатель может указывать на разные функции. Ручная реализация концепции "виртуальная функция".
А так указатель на функцию хранится в _list.aa, значит надо искать код, который изменяет это поле. Очень может быть, что там
могут хранится указатели на
разные функции.