我想知道使用
您可以在官方的CPython源代码中找到这样的代码。例如,
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)
break
或continue
跳过剩余的代码,而不使用goto
或return
(完全从函数返回)。在您的示例中,其目的非常不同--它强制用户在使用带有;
的宏时遵循规则,而不会引起任何编译器警告。 - ildjarn