c - 从函数返回 NULL 或什么都不返回

标签 c

我有一些函数,我想在失败时返回 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/

相关文章:

c++ - 如何从注册表中读取REG_BINARY值的关联值?

c - 为什么当我使用 64 位局部变量时堆栈指针没有减少?

c - 使用 gcc 线程的 POSIX 程序问题

c - 使用命名信号量的死锁

c - 在 Windows 上使用 GCC (MinGW) 编译 OpenGL

C Linux 设备编程 - 直接从/Dev 读取

c - 为什么 fflush(stdin) 在 while 循环中执行两次以检查 scanf() 输入?

c - 体系结构 x86_64 函数指针的 undefined symbol

c++:结构中的int值无缘无故地改变值

c - 如何防止 C 中的段错误(当采用错误类型的参数时)