https://iumi.ru/programmirovanie/c/zachem-ispolzovat-kazalos-by-bessmyslennye-do-while-i-if-else-v-makrosakh-c/
Зачем использовать, казалось бы, бессмысленные do-while и if-else в макросах C++?