WILD_A: no, jde o interface nad dynamickými objekty v čistém C, kdy voláš:
(objekt->interface->metoda *)(objekt, parametry)
jde s tím dělat různé srandičky, jako polymorfismus mezi objekty se stejným typem interfacu. v C ale narazíš na to, že nemůžeš přetížit aritmetické operátory, apod. na druhou stranu, různá podivná chování při např. matematickými operacemi mezi čísly a stringem jsou nejčastější příčiny divných překvapení ve většině dynamicky typovaných skriptovacích jazyků. takže nevím, jestli se o soutěže o ještě větší zmatení zapojovat, a neponechat prostě matematické operátory primitivním číselným typům a nepracovat s objekty zásadně jinak)
(stejně mám vymyšlené makro, které to, co jsem popsal výše, zvládne expandovat bez "double evaluation" problému, kterým C preprocesor trpí... takže tím bude možné zavolat metodu objektu vráceného jinou metodou... samozřejmě, hezké to není, ale ani vygenerovaný C kód by to stejně moc jinak dělat nemohl)
např. call(metoda2, call(metoda1, objekt, parametry), parametry) - za předpokladu, že oproti tomu, co je zvykem v jiných objektových jazycích, je tam pořadí typu "metoda , objekt" místo "objekt.metoda" ... ale to je právě v duchu C, kde se struktury předávají jako parametry funkcím.
jen nevím, jestli tomu makru říkat "call()" nebo stručněji "go()" - logické je imho call, protože to není žádné goto (JMP) ale klasické volání funkce s returnem.
no ale dokud nereleasnu něco použitelného, tak jsem na tom trochu jako Rossi s tou studenou funkcí :-) každopádně ten pocit, že v C "vím, co vygenerovaný kód přesně dělá" (min. teda v paměti) je hrozně návykový a člověku se nechce to opouštět, když to jednou zná.