Chlapi (a roby), mám zcela nový podnět do diskuse. Když odmyslím Lisp s jeho objektovou nadstavbou, existuje v (skutečném) OOP světě něco jako makra? Pokud ano, jak moc se používají a pokud ne, tak proč ne?
Já bych řekl, že principielně jsou to ortogonální koncepty. Makra slouží k automatickému generování kódu z dat - tj. jsou někde na úrovni "textu programu" (v případě hloupých C maker doslovně, v případě plnotučných na úrovni AST). OOP je o tom, jak modelovat problém, jak program strukturovat. Takže je to spíš o nějakou tu úroveň výš.
Čistě prakticky je ale pravda, že v dobrém OOP jazyce makra moc nevyužiješ, protože máš prostě jiné prostředky pro dosažení podobných cílů. IMHO makra nejvíc využiješ ve statickém, kompilovaném jazyce, který se hodně motá kolem funkcí.
P.S. a teď je přesně čas na další Go rant: "go generate"? Ve 21. století? To si snad děláte pr.del, ne!?!