Цитата(ViKo @ Sep 27 2013, 21:55)

А я иногда делаю так
Код
#define WDELAY_RESTART(); \
TIM7->EGR = TIM_EGR_UG; \
TIM7->SR = 0; \
TIM7->CR1 |= TIM_CR1_CEN;
Не буду оппонировать "монстрам от программирования", но случаи "а если..." мне кажутся надуманными.
Чудовищно. В этом случае if(xxx) WDELAY_RESTART(); просто молча породит неправильный код.
Вам кажется надуманным использование оператора "if"?
Цитата(Allregia @ Sep 27 2013, 20:55)

По моему, так понятнее, без do..while.
do {} while(0) - стандартная конструкция, она не должна быть непонятна в принципе.