以下“玩具”代码表示我在使用POSIX timers的较大代码库中遇到的问题。
#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;
}
当我尝试在Linux机器上使用g++
编译它时,我收到错误:
error: ‘struct sigevent’ has no member named ‘sigev_notify_thread_id’
有原因吗? This让我相信sigevent
结构中有一个名为sigev_notify_thread_id
的成员。
答案 0 :(得分:4)
将sevp.sigev_notify_thread_id
更改为sevp._sigev_un._tid
解决了我的问题。您可以在第295行here上看到该定义。
感谢@Duck提供了有用的评论。