• 回调函数的应用误区2(与原理相悖的回调函数)


    研究了一段时间回调函数,越看越迷惑,分析并改进了从网上看到的几篇好文,看过后有了自己的看法。我也不知道这些跌跌撞撞的认识是否符合回调的真实原理,若有大侠能帮解惑,自当感激不尽。

    下面的代码可以在Vs2008下编译并运行:

    个人观点:

    以下代码虽说是按照C/S,调用者/被调者的思路去设计回调函数的,但实际上整个代码里面缺少最关键一环:没有出现被调函数(即用回调函数做参数的函数),所以不符合回调函数的基本原理。

    就把它当成c/s模式下的函数指针调用吧,或者不伦不类的函数指针调用,没有理解到回调函数的真正含义,这个误区你犯过了没?。

    ################dll.h################

    #pragma once
    typedef void (* CALLBACK)(int var);
    extern CALLBACK g_pfunc;
    extern void dll_register_callback();

    ################dll.cpp################

    #include <stdio.h>
    #include "dll.h"

    CALLBACK g_pfunc = NULL;

    //回调函数定义
    void CallBackFunc(int var)
    {
        printf("[CallBackFunc]: data=%d ", var);
    }

    //回调函数注册
    void dll_register_callback()
    {
        g_pfunc = CallBackFunc;
    }
    ################app.cpp################

    #include <stdio.h>
    #include "dll.h"

    int main()
    {    
        //register CALLBACK
        dll_register_callback();
        //run CALLBACK
        (*g_pfunc)(20);
        return 0;
    }

  • 相关阅读:
    小程序配置安装
    微信小程序--录制音频,播放音频
    微信小程序报错.wxss无法找到
    linux 安装 elasticsearch
    Ubuntu 安装Logstash
    python 开发微信 自定义菜单
    微信 python搭建服务器
    vue 本地存储数据 sessionStorage
    luogu1742 最小圆覆盖
    luogu1501 [国家集训队]Tree II
  • 原文地址:https://www.cnblogs.com/jacklikedogs/p/3748002.html
Copyright © 2020-2023  润新知