C многострочный макрос: do / while (0) против блока области видимости [duplicate]
Possible Duplicates:
What’s the use of do while(0) when we define a macro?
Why are there sometimes meaningless do/while and if/else statements in C/C++ macros?
do { … } while (0) what is it good for?
Я видел несколько многострочных макросов C, которые заключены в цикл do / while (0), например:
#define FOO \ do { \ do_stuff_here \ do_more_stuff \ } while (0)
Каковы преимущества (если таковые имеются) написания кода таким способом по сравнению с использованием базового блока:
#define FOO \ { \ do_stuff_here \ do_more_stuff \ }