2014-09-27 15 views
5

Sto scrivendo un programma di threading e il metodo pthread_create richiede una funzione void *.C - il controllo raggiunge la fine della funzione non vuoto

Sto ricevendo l'avviso "controllo raggiunge la fine della funzione non vuota" e ho capito perché (perché non ho alcuna dichiarazione ufficiale di reso) - la mia domanda è davvero solo cosa dovrei tornare in questo caso ?

Va bene restituire NULL? Non penso che il mio valore di ritorno influenzerà qualcos'altro nel mio programma, ma mi chiedo solo quale sia lo standard per evitare questo avvertimento durante la programmazione con programmi multithread.

+1

pthread_exit (NULL); alla fine della funzione thread dovrei fare –

risposta

5

Il ritorno NULL va bene, ed è il modo normale. Niente utilizzerà il valore di ritorno a meno che non si scriva il codice per usarlo. NULL è un valore valido per void * e, se non ti interessa quale sia il valore, l'unica cosa che conta è che sia valida.

1

provare qualcosa di simile:

#include <pthread.h> 

void* you_func(void* param) { 
    // do stuff here ... 
    // and terminates as follows: 
    pthread_exit(NULL); 
} 

speranza che ti aiuta.

+0

Ho notato che usando i compilatori cross win32 e win64, i686-w64-mingw32-gcc e x86_64-w64-mingw32-gcc - questo avvertimento del compilatore persiste anche con la chiamata a pthread_exit (NULL) . Non ho ricevuto l'avviso per gcc sotto linux nativo o il compilatore cross arm (arm-linux-gnueabihf-gcc-4.8) – bph