2013-05-30 29 views
8

Mã "đồ chơi" sau đại diện cho sự cố tôi đang gặp phải trong cơ sở mã lớn hơn sử dụng POSIX timers.: ‘struct sigevent’ không có thành viên nào có tên ‘sigev_notify_thread_id’

#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; 
} 

Khi tôi cố gắng biên dịch nó bằng cách sử g++ trên một máy Linux Tôi nhận được lỗi:

error: ‘struct sigevent’ has no member named ‘sigev_notify_thread_id’ 

Có một lý do tại sao? This dẫn tôi tin rằng cấu trúc sigevent có thành viên được gọi là sigev_notify_thread_id.

+2

Cảm ơn @Duck. 'sevp._sigev_un._tid' và dòng 295" ở đây - http://lxr.free-electrons.com/source/include/uapi/asm-generic/siginfo.h#L295 "đã khắc phục được sự cố của tôi. Đăng câu trả lời đó và tôi sẽ chấp nhận! – dinkelk

Trả lời

4

Thay đổi sevp.sigev_notify_thread_id thành sevp._sigev_un._tid khắc phục sự cố của tôi. Bạn có thể xem định nghĩa trên dòng 295 here.

Nhờ @Duck cho nhận xét hữu ích.

Các vấn đề liên quan