我有一些函数,我想在失败时返回 NULL,而在成功时它们不需要返回任何东西。我一直在使用 void * function_name(...)
,但它仍然需要我返回一些东西。
我这样做的原因是检测失败作为 python C 扩展的一部分,他们建议最里面的函数设置任何异常,返回 NULL,然后通过堆栈向上执行。
在这种情况下,最佳做法是什么?返回 0、-1 或类似的东西?
最佳答案
在纯 C 术语中,最简单的方法是返回一个指示成功/失败的 bool 标志。
就与 Python 的集成而言,另一种方法是:
PyObject* func() {
...
if (error) {
/* set the exception */
PyErr_Format(PyExc_..., ...); /* TODO: fill in as appropriate */
return NULL;
}
/* return None */
Py_RETURN_NONE;
}
关于c - 从函数返回 NULL 或什么都不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17322288/