当前位置:首页 > 技术 > C/C++ > 正文内容

关于C语言中回调函数的学习

Watrt5年前 (2019-09-16)C/C++15230

先上学习代码:

#include "stdio.h"

int my_cb1(int x){
    x++;
    printf("my_cb1执行了,x:%d\n",x);
    x++;
    return x;
}
void run_cb1(int (* mycb)(int),int x){
    int y;
    y=(* my_cb1)(x);
    printf("my_cb1调用完了 Y:%d\n",y);
}

void my_cb(void){
    printf("my_cb执行了\n");
}
void run_cb(void (* mycb)(void)){
    (* my_cb)();
    printf("my_cb调用完了\n");
}
int main(int argc, char const *argv[])
{
    run_cb(my_cb);
    run_cb1(my_cb1,4);
    return 0;
}

共四个函数:一个是回调,一个是运行回调,一个是没有参数一个是有参数。

运行函数的参数必须与传递的函数一致,否则会出错。同样的回可返回。运行函数可以在第二参数后面添加上要带到回调的参数。这样实现回调时可以传参。

分享给朋友:

相关文章

C# 串口调式工具简单开发

C# 串口调式工具简单开发

        在玩单片机和嵌入式开发中。经常会用到一个工具。那就是串口。这个是做开发经常会用到的工具。而且在现实中很多的设备在使用中也会使用到串口来输出调试数据或者使用串口来升级软件。        而在使用中使用上位机的开发中也经常要使用到串口。现在我就来使用C# 对串口的数据通信做一个简单的开发。   ...

使用atlas为microui生成字库

使用atlas为microui生成字库

首先说一下原理:microui这套UI库使用的是图片然后通过坐标定位的方式来处理图标/字体来处理的。首先获取atlas代码:git clone https://github.com/rxi/atlas.git 然后bash运行:目录下的build.sh文件编译,然后会生成一个atlas可执行文件。中文比较多,所以在编译前最好修改一下limits.h文件里面的参数。然后在atlas同级目录下新一个文件。放入字休文件msyh.ttf(微软雅黑),如果有图标还要放入:pic.png 文件。然...

arduino esp32开发板安装困难解决方法

arduino esp32开发板安装困难解决方法

最近想使用arduino来编辑一下esp32固件,结果出师不利,IDE迟迟安装不好。下面提供一下解决方法供大家参考。我使用的是arduino是1.8.19版,在新版本上没有尝试过。但是思路应该差不多吧。首先在在arduino IDE中设置乐鑫的附加开发板的地址:https://dl.espressif.com/dl/package_esp32_index.json stm32:http://dan.drown.org/stm32duino/package_STM32duino_index.jso...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。