【问题标题】:Callback without function pointer没有函数指针的回调
【发布时间】:2010-08-13 08:15:19
【问题描述】:

通常说回调是用函数指针实现的。当我检查 PortAudio 的源代码时,我看到回调函数被声明为一个普通函数(不是 f 指针)。是否正常/合法/可取?

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

【问题讨论】:

    标签: c callback


    【解决方案1】:

    只要将参数用作PaStreamCallback*(这是一个指针指向函数)就可以了,比如

    PaError Pa_OpenStream   (
            PaStream **      stream,
            const PaStreamParameters *      inputParameters,
            const PaStreamParameters *      outputParameters,
            double      sampleRate,
            unsigned long   framesPerBuffer,
            PaStreamFlags   streamFlags,
            PaStreamCallback *      streamCallback,   // <---
            void *      userData     
        ) 
    

    【讨论】:

    • 好的,谢谢。顺便说一句,这些函数仅以其名称传递给 Pa_OpenStream,但逻辑上必须使用 addressof 运算符传递,但省略 & 是一种快捷方式,对吧?
    • @paul 如果foo 是一个函数,则foo&amp;foo 是等价的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    相关资源
    最近更新 更多