|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2010
Messaggi: 67
|
[C] un callback con void* come parametro
Buona sera.
Vorrei realizzare una funzione callback alla quale si possa passare un puntatore a void, un po' come si fa al momento di una creazione di un thread POSIX. Questo mi permetterebbe di passarci tutto quello che mi pare, in particolare una struct se ho più variabili. Nel mezzo pseudocodice che segue ho riportato il test più recente che sto effettuando, grazie al quale mi sorge un dubbio: come faccio a passare la struttura st al callback "attraverso" func? Forse quest'ultima dovrebbe possedere anch'essa un puntatore a void, in aggiunta al callback? Ma soprattutto: è questa la via giusta da intraprendere? Codice:
void func( void (*callback)(void*) );
void callback( void * );
main()
{
struct st;
func( &callback );
}
void func( void (*callback)(void*) ) {
// qui chiamo la funzione callback
}
void callback( void * ) {
// faccio il cast da void* al necessario e uso i dati
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
No, quel parametro non glielo puoi passare. O, sì, potresti passarglielo, ma dovresti fare una cosa del tipo:
O rendi globale la struttura... Magari no.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Apr 2010
Messaggi: 67
|
Ciao, gentilissimo per la risposta.
Quindi, secondo il tuo suggerimento, la "func" deve diventare da Codice:
void func( void (*callback)(void*) ); Codice:
void func( void*, void (*callback)(void*) ); Un'ultima considerazione: essendo void* puntatori "al niente", possono essere considerati facoltativi nel caso non dovessi passare nessun parametro? No grazie |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Sì, intendevo una cosa di quel tipo.
Quote:
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#5 | ||
|
Member
Iscritto dal: Apr 2010
Messaggi: 67
|
Quote:
Esempio: in un certo momento del programma devo chiamare "func" ma non mi interessa passargli nessun dato: è lecito chiamarla come segue? Quote:
|
||
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Be' sì, questo è possibile.
Però nel tuo caso arriverà un NULL anche alla funzione di callback. Anche se penso che in quel caso non ti interessi molto.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Apr 2010
Messaggi: 67
|
Yes, e al massimo si fanno i controlli del caso.
Ti ringrazio moltissimo per il supporto!
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
E di che.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:35.




















