C で OOP

C で OOP に挑戦中.
継承自体はいいとして,多態性はどうすればいいのだろう?仮想関数を使いたい.関数ポインタで vtable を実装することになると思うんだけれど,どう表現すればスマートになる?
絶対,多くの人が既にやっているはず.ただ,ちょっとググっただけでは出てこない.困った...というか悩ましい.