История изменений
Исправление A-234, (текущая версия) :
Тут как раз все просто, это делается на случай употребления данной конструкции в else. Сопоставьте необходимость в употреблении ";" в следующем примере, это должно навести вас на мысль :)
#define X(v) do { v += v + 1; } while (0)
#define Y(v) { v += v + 1; }
int
main(int argc, char** argv)
{
int x;
if (argc == 1)
x = 3;
else
x = 1;
if (argc == 2)
X(argc);
else
Y(argc);
if (argc == 3)
Y(argc)
else
X(argc);
return 0;
}
Исходная версия A-234, :
Тут как раз все просто, это делается на случай употребления данной конструкции в else. Сопоставьте необходимость в употреблении ";" в следующем примере, это должно навести вас на мысль :)
#define X(v) do { v += v + 1; } while (0)
#define Y(v) { v += v + 1; }
int
main(int argc, char** argv)
{
int x;
if (argc == 1)
x = 3;
else
x = 1;
if (argc == 2)
X(argc);
else
Y(argc);
if (argc == 3)
Y(argc)
else
X(argc);
return 0;
}