编译头文件中的时间错误

时间:2018-03-20 11:28:22

标签: c compiler-errors

错误的原始代码

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,但我遇到了上述错误。

1 个答案:

答案 0 :(得分:1)

由于错误提示您需要将旧地址作为参数传递给函数sigismember,如下所示:

*oldstate = (int *) sigismember(&old,SIG_CANCEL_SIGNAL) == 0 ? \ 
                                PTHREAD_CANCEL_DISABLE : PTHREAD_CANCEL_ENABLE;