[so] do{ ...} while(0);
Razvan Deaconescu
razvand at cs.pub.ro
Mon May 5 22:53:30 EEST 2008
On Mon, 2008-05-05 at 22:42 +0300, Andrei Voinescu wrote:
> Nu este suficient sa fie intr-un bloc de acolade ?
>
>
> Andrei
>
> p.s. Asa vad ca faceau si in link, doar ca acolo presupunea din varii
> motive ca se va pune ; dupa apelul de macro, ceea ce nu prea are
> logica, oricum si in cazul celalalt ai avea in macro do { .. }
> while(0); si mai pui ';' si iti vor iesi ;; si tot nu-l va interpreta
> ca else.
#define print_so_rules_forever(msg) \
do { \
puts(msg); \
puts("I love hardcore macros"); \
} while (0)
Fara ; (punct si virgula). Te forteaza sa o pui. Daca o pui din
greseala, atunci e acelasi lucru cu folosirea acoladelor.
De-asta este recomandata constructia do { ... } while (0) in loc de
acolade. Daca folosesti
print_so_rules_forever(msg)
(fara ;) iti va da eroare de compilare.
Razvan
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
More information about the so
mailing list