【问题标题】:Compile time error in header file头文件中的编译时错误
【发布时间】:2018-03-20 11:28:21
【问题描述】:

错误源代码

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 *';取地址 with & ...= sigismember(old,SIG...

我正在编译一个程序,但是上面的错误正在生成。

我正在学习 c,但我遇到了上述错误。

【问题讨论】:

  • 您是否仔细阅读了sigismember(3) 的文档?阅读更多并养成阅读您使用的每个函数的文档的习惯。
  • 您是否尝试过按照错误消息告诉您的操作?

标签: c compiler-errors


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 2011-07-29
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多