错误:'struct sigevent'没有名为'sigev_notify_thread_id'的成员

din*_*elk 8 c++ linux signals timer

以下"玩具"代码表示我在使用POSIX计时器的较大代码库中遇到的问题.

#include <time.h>
#include <errno.h>
#include <signal.h>
#include <iostream>

using namespace std;

int main()
{   
    struct sigevent sevp;
    long threadId = 5;

    sevp.sigev_notify = SIGEV_THREAD_ID;
    sevp.sigev_notify_thread_id = threadId;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试g++在Linux机器上使用它编译时,我收到错误:

error: ‘struct sigevent’ has no member named ‘sigev_notify_thread_id’
Run Code Online (Sandbox Code Playgroud)

有原因吗?让我相信sigevent结构中有一个名为的成员sigev_notify_thread_id.

din*_*elk 5

更改sevp.sigev_notify_thread_idsevp._sigev_un._tid解决我的问题。您可以在此处查看第 295 行的定义。

感谢@Duck 的有用评论。