makecontext function pointer [error: invalid use of void expression]

makecontext function pointer [error: invalid use of void expression]

我有以下代码(它用于 class 的线程库):

int tcb_context_create(TCB *thread, void (*start)(void*), void *arg) {
    if (!makecontext( &(thread->context), (void (*) (void)) start, 1, arg)) {
        errno = EAGAIN;
        return -1;
    }

    return 0;
}

但我的编译器一直给出 'error: invalid use of void expression' 我到处搜索,但找不到使用 makecontext 函数的正确方法。

更正:

int tcb_context_create(TCB *thread, void (*start)(void*), void *arg) {
    makecontext( &(thread->context), (void (*) (void)) start, 1, arg);

    return 0;
}

makecontext 的 return 类型是 void。在 void 上使用 ! 是不正确的。

此外,您在 if 块之外没有 return 语句。由于函数的 return 类型是 int,您需要添加适当的 return 语句。否则,您将 运行 变成未定义的行为。