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 语句。否则,您将 运行 变成未定义的行为。
我有以下代码(它用于 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 语句。否则,您将 运行 变成未定义的行为。