What one can do and how much of that one should do aren't the same thing, of course.
Polymorphism in C
Portable Inheritance and Polymorphism in C