下面的“玩具”代码代表了我在使用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; }
当我尝试在Linux机器上使用g++
进行编译时,出现以下错误:
error: 'struct sigevent' has no member named 'sigev_notify_thread_id'
有什么原因吗? 这导致我相信sigevent
结构有一个名为sigevent
的成员。
更改sevp.sigev_notify_thread_id
到sevp._sigev_un._tid
修复了我的问题。 你可以在这里看到第295行的定义。
感谢@Duck的有用评论。