Во многих макросах C/С++ я вижу код макроса, завернутый в то, что кажется бессмысленным циклом do while
. Вот примеры.
#define FOO(X) do { f(X); g(X); } while (0)
#define FOO(X) if (1) { f(X); g(X); } else
Я не вижу, что делает do while
. Почему бы просто не написать это без него?
#define FOO(X) f(X); g(X)