Цитата(GetSmart @ Sep 28 2009, 11:58)

По поводу do {} while(0) в дефайнах. Кто-нить может объяснить чем это лучше простого {} ???
не ручаюсь за терминологию, но как-то так:
do {...} while (0) - выглядит один оператор
{...} - блок операторов
#define FUN do{...} while(0)
#define FUN2 {...}
Код
корректно:
if (..)
FUN (x);
else
FUN (2*x);
ошибка:
if (..)
FUN2 (x);
else
FUN2 (2*x);
Цитата(GetSmart @ Sep 28 2009, 08:58)

Только в моей версии там не совсем параметр. И тем более не типизированный. Там может стоять любая строка сишного кода, в данном случае if (...)
Хоть убейте, не могу придумать задачу, где в параметре данного дефайна необходимо поставить что-то окромя булевского выражения