Возможный дубликат:
Почему иногда существуют бессмысленные операторы do/while и if/else в макросах C/С++?
Я видел это выражение уже более 10 лет. Я пытался подумать, для чего это полезно. Поскольку я вижу это в основном в #defines, я предполагаю, что он хорош для внутреннего объявления переменной области видимости и для использования разрывов (вместо gotos.)
Это хорошо для чего-нибудь еще? Вы используете его?