错误的原始代码
static int pthread_setcancelstate(int state, int *oldstate) {
sigset_t new, old;
int ret;
sigemptyset (&new);
sigaddset (&new, SIG_CANCEL_SIGNAL);
ret = pthread_sigmask(state == PTHREAD_CANCEL_ENABLE ? SIG_BLOCK : SIG_UNBLOCK, &new , &old);
if(oldstate != NULL)
{
*oldstate = sigismember(old,SIG_CANCEL_SIGNAL) == 0 ? PTHREAD_CANCEL_DISABLE : PTHREAD_CANCEL_ENABLE;
}
return ret;
}
错误:将'sigset_t'传递给参数 不兼容的类型'const sigset_t *';拿地址 与& ... = sigismember(旧的,SIG ......
我正在编译程序,但正在生成错误。
我正在学习c,但我遇到了上述错误。
答案 0 :(得分:1)
由于错误提示您需要将旧地址作为参数传递给函数sigismember
,如下所示:
*oldstate = (int *) sigismember(&old,SIG_CANCEL_SIGNAL) == 0 ? \
PTHREAD_CANCEL_DISABLE : PTHREAD_CANCEL_ENABLE;