PDA

Visualizza la versione completa : [C/C++] Valori di ritorno


akiross
12-05-2003, 19:33
Ciao
piu' di una volta mi e' capitato di vedere delle funzioni di questo tipo:


pippo void funzione (parametri);


cioe', una funzione normale, ma con uno o anche 2 cose davanti al valore di ritorno (questo pippo e' di esemio ovviamente :)
soprattutto vedo cose tipo callback

Qualcuno mi spiega cosa sono, e cose varie?

Grazie
ciao

TheGreatWorld
12-05-2003, 20:50
Dipende a cosa corrisponde pippo. Se non si tratta di regole di scope (static, external) allora e' una qualche estenzione dell'ambiente di sviluppo che stai utilizzando (microsoft? QT?)

bye

r0x
12-05-2003, 23:52
Sicuramente la mia definizione non e` rigorosa, ma forse da` l`idea. Una callback di solito e` una funzione richiamata non dal programmatore tramite un puntatore a funzione. In Windows esempi di callback sono le WNDPROC. Tu scrivi la funzione ma non la chiamerai direttamente: lo fara` il sistema operativo.

Altro esempio pratico. Hai presente la creazione di threads (anche POSIX, pthread)? Alla funzione che crea il thread passi solitamente un puntatore alla procedura nella quale vuoi che il tuo thread entri al momento della sua creazione. Ecco, quella e` una callback, perche` la procedura non viene chiamata da te ma da un altro modulo - in questo caso lo scheduler dei threads - che vi accede tramite puntatore a funzione.

akiross
13-05-2003, 08:12
grazie r0x, anche se non uso ancora i thread ho afferrato il concetto, cmq le callback le ho usate anche in altre situazioni (tipo ogl).

TheGreat
adesso che ci penso, cose simili le vedo quando (almeno la maggior parte di volte) c'e' una interfaccia grafica (o per win o per qt), quindi a questo punto suppongo siano estensioni. Ma le estensioni cosa sono? come si fanno? e sono specifiche solo per un determinato compilatore? (su questa ho qualche dubbio...)

Grazie ad entrambi
Ciao

TheGreatWorld
13-05-2003, 20:06
Si, sono specifiche solo per un particolare ambiente di sviluppo. Servono per particolari ottimizzazioni o per inserire nuove features non supportate dal linguaggio standard.

bye

Loading