Тема: do {...} while (0) у макросі
Я знайшов статтю про макроси, де описується чому використовують в макрос do {...} while (0) (я таку конструкцію побачив у GMP)
але не зрозумів всерівно.
В статті пише що такий
if (!feral) {
bar(wolf);
baz(wolf);
};
else
bin(wolf);
синтаксис буде помилкою.
Я спробував відтворити
#include <iostream>
using namespace std;
void aa(int a)
{
cout << "aa\n";
}
void bb(int b)
{
cout << "bb\n";
}
#define f(wolf, feral) { \
if(!feral) \
{\
bb(wolf); \
aa(wolf);\
}\
else \
{\
bb(wolf);\
}\
}\
int main()
{
f(6, true);
getchar();
return 0;
}
і в мене не виникло помилки, схоже я щось не так роблю, можете пояснити що ?