|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2008
Messaggi: 96
|
[C] Confusione su puntatori a funzione e uso del void!!
Salve a tutti eccomi di nuovo qua con un nuovo dubbio, spero che anche oggi come ieri potete aiutarmi...sto usando la libreria "pthread" ma siccome è un pò che non uso il C sto andando in confusione sulla dichiarazione della funzione che crea i thread, eccola qui:
Codice:
int pthread_create(pthread_t * thread,
const pthread_attr_t * attr,
void * (*start_routine)(void *),
void *arg);
Codice:
void * (*start_routine)(void *) Codice:
* (*start_routine) Nella mia ignoranza credo che il primo significhi che la funzione può anche non ritornare nulla, mentre il secondo tra parentesi dovrebbe significare che posso non passare argometi alla funzione??? Vi prego datemi qualche delucidazione!!! P.S. Riguardo ad Codice:
void *arg Grazieee!!!!! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
vuol dire che la funzione che devi passare deve ritornare un void* e prende come argomento un void*
arg è l'argomento che verrà passato alla funzione al momento del lancio del thread essendo void* in entrambi i casi, puoi fare un po' quello che vuoi, perché puoi castare ogni tipo di puntatore a void* e poi ricastare il void* al tipo opportuno se ad esempio come argomento hai bisogno di un certo numero di argomenti e non te ne basta uno, puoi definire una struct e passare quella come argomento (castandola a void*), dopo di che come prima operazione nella routine del thread casti l'argomento al puntatore alla tua struct |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Dec 2008
Messaggi: 96
|
Ti ringrazio tuccio!
Solo che non ho ben capito come funziona il void*, potresti farmi un esempio usando come hai detto tu una struct? Ma in pratica, sto void* è un pò come il tipo object della programmazione ad oggetti che può contenere qualsiasi cosa?? Grazie ancora! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:29.



















