Callback without function pointer
It is usually said callbacks are implemented with function pointers. When I check PortAudio's source code, I see that callback function is declared as an ordinary function (not a f. pointer). Is it n开发者_如何学Goormal/legal/advisable?
typedef int PaStreamCallback(
const void *input, void *output,
unsigned long frameCount,
const PaStreamCallbackTimeInfo* timeInfo,
PaStreamCallbackFlags statusFlags,
void *userData );
It is fine as long as the parameter is used as PaStreamCallback*
(which is a pointer to a function), like
PaError Pa_OpenStream (
PaStream ** stream,
const PaStreamParameters * inputParameters,
const PaStreamParameters * outputParameters,
double sampleRate,
unsigned long framesPerBuffer,
PaStreamFlags streamFlags,
PaStreamCallback * streamCallback, // <---
void * userData
)
精彩评论