REDGUY: no.... řekl bych, že "finta" na objektový polymorfismus v čistém C lze pokládat za přímé využití základních vlastností jazyka způsobem, který není ve většině učebnic popsán - a že ty si myslíš, že autoři s tímto nepočítali, protože si v nějaké své učebnici či projektu který studoval místo toho viděl obyčejné (max. tagované) struktury předáváné funkcím - to neznamená, že autoři C byli tak krátkozrací, jak si myslíš.
naproti tomu u té dědičnosti tam vysloveně není podpora pro to, aby něco jako user->address->street stačilo zapsat jako user->street (což by bylo možné v objektovém jazyce, kde by třída "user" vznikla např. rozšířením třídy "address" ... takže prostě pro tu dědičnost není v C vůbec žádné zázemí a odkazování na již existující datové struktury v C není dědičnost.
mainstreamové objektové jazyky jsou podle mě obecně vhodné pro top-down přístup k návrhu programů (tedy nadefinuješ si jako analytik třídy a jejich požadované metody... a pak nějakému námezdnému coderovi zadáš jejich implementaci) ... zatímco přístup v C mě přijde dobré pro bottom-up přístup (kdy naopak poskládáš nové věci z toho, co už máš - tedy ti jsi ten, kdo ví, co všechno už má, a zkouší, co všechno by z toho šlo poskládat, aniž by existovala analýza problému)