19 ŞUBAT 2010, Cuma
C geri arama işlevleri
C , ne zaman ve nasıl bir geri arama işlevini kullanıyor musunuz?
DÜZENLEME:
Geri arama fonksiyonu yazmak için basit bir örnek görmek isterim.
CEVAP
19 ŞUBAT 2010, Cuma
Ayrıca geri aramalar yapmak C yolu vardır: fonksiyon işaretçiler
//Define a type for the callback signature,
//it is not necessary, but makes life easier
//Function pointer called CallbackType that takes a float
//and returns an int
typedef int (*CallbackType)(float);
void DoWork(CallbackType callback)
{
float variable = 0.0f;
//Do calculations
//Call the callback with the variable, and retrieve the
//result
int result = callback(variable);
//Do something with the result
}
int SomeCallback(float variable)
{
int result;
//Interpret variable
return result;
}
int main(int argc, char ** argv)
{
//Pass in SomeCallback to the DoWork
DoWork(&SomeCallback);
}
Şimdi ise geri aramalar sınıf yöntemleri geçirmek isterseniz, bu işlev işaretçileri için bildirimleri daha karmaşık tanımlamalar, örnek:
//Declaration:
typedef int (ClassName::*CallbackType)(float);
//This method performs work using an object instance
void DoWorkObject(CallbackType callback)
{
//Class instance to invoke it through
ClassName objectInstance;
//Invocation
int result = (objectInstance.*callback)(1.0f);
}
//This method performs work using an object pointer
void DoWorkPointer(CallbackType callback)
{
//Class pointer to invoke it through
ClassName * pointerInstance;
//Invocation
int result = (pointerInstance->*callback)(1.0f);
}
int main(int argc, char ** argv)
{
//Pass in SomeCallback to the DoWork
DoWorkObject(&ClassName::Method);
DoWorkPointer(&ClassName::Method);
}
Bunu Paylaş:
Java geri arama işlevleri...
jQuery Eklentisi: Geri arama işlevi Ek...
Nasıl bir javascript geri arama güncel...
'#_=_' Dönüş için Facebook G...
Bir Geri gönderme ve Geri arama arasın...