【发布时间】:2011-05-31 07:19:49
【问题描述】:
我正在用 C 语言编写一个 Python 类,我想在我的调试代码中添加断言。 assert.h 很适合我。这只会被放入调试编译中,因此断言失败不会影响 Python 代码的用户*。
我正在尝试划分我的“库”代码(它应该与链接到 Python 的代码分开),以便我可以从其他 C 代码中使用它。因此,我的 Python 方法是纯 C 代码的精简包装器。
所以我不能在我的“库”代码中这样做:
if (black == white)
{
PyErr_SetString(PyExc_RuntimeError, "Remap failed");
}
因为这会用 Python 污染我的纯 C 代码。它也比简单的丑得多
assert(black != white);
我相信 Distutils 编译器总是设置NDEBUG,这意味着即使在调试版本中我也不能使用assert.h。
Mac OS 和 Linux。
救命!
*我听说过一个反对在从 Python 调用的 C 代码中断言的论点。
【问题讨论】:
标签: python c distutils python-c-api python-c-extension