当前位置: 首页 > ds >正文

嵌入式学习笔记 - 用typedef定义函数指针

在C语言中,typedef是一个关键字,用于为已有的数据类型定义一个新的名称(别名),同样它也可以为函数定义别名。

一 直接定义函数指针的方式

我们只知道直接定义一个函数指针的方式如下:

int (*func_ptr)(int, int);

定义一个指向【返回int且接受两个int参数的】函数指针

二 使用typedef定义函数指针的方式

(1) 先定义函数类型再定义指针:

typedef void FUNC_TYPE(int, char); // 定义函数类型

FUNC_TYPE *pFunc = func;

(2) 直接定义函数指针类型:

typedef void (*FUNC_TYPE2)(int, char); // 定义函数指针类型

FUNC_TYPE2 pFunc2 = func;

三 语法解释

使用typedef定义函数指针的基本语法:

typedef 返回类型 (*函数指针类型)(参数类型);

示例:

假设我们有一个函数:

int add(int a, int b) {

return a + b;

}

我们可以定义一个指向该函数的指针类型,如下所示:

typedef int (*AddFuncPtr)(int, int);

这里,AddFuncPtr就是函数指针的类型,它指向一个接受两个int类型参数并返回一个int类型值的函数。

定义了函数指针类型后,你可以像使用其他数据类型一样使用它。例如,声明一个函数指针变量,并将它指向add函数:

AddFuncPtr ptr = add; // 使用函数名初始化指针

ptr(2, 3); // 通过指针调用函数,输出 5

四 FreeRTOS示例

freeRTOS任务创建函数第一个形参就使用了tepedef 定义函数指针的方式定义任务函数入口,如下:

typedef void (*TaskFunction_t)( void * );

由以上分析可知,上述代码的意思是定义了一个返回void类型(无返回),并接受void*类型指针的函数指针。

可以指向无返回类型的接收任何参数的一个函数。

http://www.xdnf.cn/news/9568.html

相关文章:

  • 网络安全十大漏洞
  • 22.代理模式:思考与解读
  • MongoDB选择理由
  • Java设计模式之解释器模式详解
  • flutter使用html_editor_enhanced: ^2.6.0后,编辑框无法获取焦点,无法操作
  • 计算机网络 - 关于IP相关计算题
  • BugKu Web渗透之矛盾
  • Nodejs+http-server 使用 http-server 快速搭建本地图片访问服务
  • 计算机网络(4)——网络层
  • 使用LangChain与多模态模型实现图像中的文字和表格提取(PDF可转图片)
  • Android 插件化
  • 中企出海大会|打造全球化云计算一张网,云网络助力中企出海和AI创新
  • AudioTrack的理解
  • Mini-F5265-OB开发板——UART不定长接收
  • 内联盒模型基本概念?——前端面试中的隐形考点剖析
  • 前端EXCEL插件智表ZCELL数据源功能详解
  • LabVIEW 中内存释放相关问题
  • 2025年渗透测试面试题总结-匿名[校招]安全工程师(甲方)(题目+回答)
  • 第2讲、从启动到表单加载:Odoo 18 的完整执行流程详解
  • [科研实践] VS Code (Copilot) + Overleaf (使用 Overleaf Workshop 插件)
  • RabbitMQ仲裁队列高可用架构解析
  • Mac 版不能连接华为 GaussDB 吗?我看 Windows 版可以连接?
  • delphi12 sqlserver 客户-服务简单连接设置
  • GitLab CI流水线权限隔离
  • 数据结构-代码总结
  • Spring AI系列之使用 Mistral AI API 实现函数调用
  • MySQL 默认的隔离级别解析
  • AWS WebRTC:获取ICE服务地址(part 1)
  • Flask集成Selenium实现网页截图
  • SpringBoot+tabula+pdfbox解析pdf中的段落和表格数据