Обратный вызов без указателя на функцию - PullRequest
3 голосов
/ 13 августа 2010

Обычно говорят, что обратные вызовы реализованы с помощью указателей функций. Когда я проверяю исходный код PortAudio, я вижу, что функция обратного вызова объявлена ​​как обычная функция (не указатель f.). Это нормально / законно / желательно?

typedef int PaStreamCallback(
const void *input, void *output,
unsigned long frameCount,
const PaStreamCallbackTimeInfo* timeInfo,
PaStreamCallbackFlags statusFlags,
void *userData );

1 Ответ

4 голосов
/ 13 августа 2010

Это нормально, если параметр используется как PaStreamCallback* (который является указателем на функцию ), например

PaError Pa_OpenStream   (
        PaStream **      stream,
        const PaStreamParameters *      inputParameters,
        const PaStreamParameters *      outputParameters,
        double      sampleRate,
        unsigned long   framesPerBuffer,
        PaStreamFlags   streamFlags,
        PaStreamCallback *      streamCallback,   // <---
        void *      userData     
    ) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...