2013-05-30 14 views
8

Il seguente codice "giocattolo" rappresenta un problema che sto riscontrando in una base di codice più grande utilizzando POSIX timers.: 'struct sigevent' non ha un membro chiamato '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; 
} 

Quando provo a compilare utilizzando g++ su una macchina Linux ottengo l'errore:

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

C'è una ragione per cui? This mi porta a credere che la struttura sigevent abbia un membro chiamato sigev_notify_thread_id.

+2

Grazie a @Duck. 'sevp._sigev_un._tid' e riga 295" qui - http://lxr.free-electrons.com/source/include/uapi/asm-generic/siginfo.h#L295 "ha risolto il problema. Pubblicalo come risposta e accetterò! – dinkelk

risposta

4

Modifica sevp.sigev_notify_thread_id a sevp._sigev_un._tid risolto il problema. Puoi vedere la definizione sulla linea 295 here.

Grazie a @Duck per l'utile commento.

Problemi correlati