Originariamente inviato da /* Coder */
Mancava la \ nello script di sopra.
E' così:

codice:
#define BEGIN (1?({
#define END }):0)
#define RETURN

#define ciccio(iParam)                    \
BEGIN                                     \
        int a, b;                         \
        a = 1;                            \
        b = 2;                            \
        if((a < iParam)                   \
           puts("Ciao pippo !");          \
        RETURN b;		          \
END
Ho preso altri tempi intanto, guardate qua:





:master:

hai compilato con -O3 ?
se no, prova a compilarlo con questo flag e rifai i bench

per le macro guarda qui (contro le macro)
http://www.parashift.com/c++-faq-lit...s.html#faq-9.5
http://www.parashift.com/c++-faq-lit....html#faq-38.4
http://www.parashift.com/c++-faq-lit....html#faq-38.5
http://www.parashift.com/c++-faq-lit....html#faq-38.6

a favore delle macro
http://www.idinews.com/macroPhobe.html
http://c2.com/cgi/wiki?PreprocessorsAreNotEvil


la fregatura principale la scoprirai quando dovrai utilizzare il debugger.