Nik*_*s R 3 c c++ python do-while semantics
可能重复:
为什么在C/C++宏中有时会出现无意义的do/while和if/else语句?
当我们定义宏时,do while(0)有什么用?
怎么做{} while(0)在宏中工作?
我想知道它的用途do{ ... } while(0)(...作为其他代码的占位符),就我所知,它与使用时完全相同....
您可以在官方CPython源代码中找到这样的代码.作为一个例子,Py_DECREF宏:
#define Py_DECREF(op) \
do { \
if (_Py_DEC_REFTOTAL _Py_REF_DEBUG_COMMA \
--((PyObject*)(op))->ob_refcnt != 0) \
_Py_CHECK_REFCNT(op) \
else \
_Py_Dealloc((PyObject *)(op)); \
} while (0)
Run Code Online (Sandbox Code Playgroud)
它使编译器需要,;所以宏看起来像一个函数调用:
Py_DECREF(x); // ok
Py_DECREF(x) // error
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
302 次 |
| 最近记录: |