可能重复:
Why are there sometimes meaningless do/while and if/else statements in C/C++ macros?
What's the use of do while(0) when we define a macro?
how does do{} while(0) work in macro?
我想知道使用do{ ... } while(0)
(...
作为其他代码的占位符)的用途,据我所知,与使用{{1}完全相同}}
您可以在官方的 CPython 源代码中找到这样的代码。例如,...
宏:
Py_DECREF
答案 0 :(得分:5)
它使编译器需要;
,因此宏看起来像一个函数调用:
Py_DECREF(x); // ok
Py_DECREF(x) // error