typedef void (*funcptr)(void) typedef void (*PFV)(); typedef int32_t (*PFI)();
看到以下代码,不明白查了一下:
/** Pointer to Function returning Void (any number of parameters) */
typedef void (*PFV)(); /** Pointer to Function returning int32_t (any number of parameters) */
typedef int32_t (*PFI)();
定义一个函数指针类型。
比如你有三个函数:
void hello(void) { printf("你好!"); }
void bye(void) { printf("再见!"); }
void ok(void) { printf("好的!"); }
typdef void (*funcptr)(void);
这样就构造了一个通用的函数
你用的时候可以这样:
void speak(int id)
{
funcptr words[] = {&hello, &bye, &ok};
funcptr fun = words[id];
(*fun)();
}
这样的话,如果speak(0)就会显示“你好!”
speak(1)就会显示“再见!”
speak(2)就会显示“好的!” 用于处理参数和返回值的形式都一样,但是功能不确定的一组函数,可以使用函数指针。 比如算术运算符,加、减、乘、除,都可以用typedef int (*calc)(int,int)代表,等等
typedef void (*funcptr)(void) typedef void (*PFV)(); typedef int32_t (*PFI)();的更多相关文章
- typedef void (*funcptr)(void)
		
定义一个函数指针类型.比如你有三个函数:void hello(void) { printf("你好!"); }void bye(void) { printf("再见!&q ...
 - typedef void (*funcptr)(void)的含义
		
fun a;//等价于void (*a)(); 这样声明起来就方便多了 void (*a)();表示a是个指针,指向一个不带参数.返回值为空的函数 定义一个函数指针类型. 比如你有三个函数: void ...
 - C语言复杂声明-void (*signal(int sig, void (*handler)(int)))(int);
		
问题提出 请分析此声明:void (*signal(int sig, void (*handler)(int)))(int); 求解过程 在对上面的例子作分析之前,我们需要了解C语言的声明优先级,&l ...
 - signal函数的原型声明void (*signal(int signo, void (*fun(int))))(int)分析
		
转:http://blog.sina.com.cn/s/blog_4850a7880100hnam.html void (*signal(int signo, void (*fun(int))))(i ...
 - void (*signal(int sig, void (*func) (int))) (int)理解
		
http://blog.csdn.net/sever2012/article/details/8281271 1.signal( int sig, void (*func)(int))signal是一 ...
 - signal函数理解或者void (*signal(int signum,void(*handler)(int)))(int)理解
		
把void (*signal(int signum,void(*handler)(int)))(int)分成两部分: typedef void (*sighandler_t)(int); sighan ...
 - 如何理解这段代码:void (*signal (int sinno,void(*func)(int)))(int)
		
void (*signal (int sinno,void(*func)(int)))(int) 先来看void(*func)(int) 这里的意思是声明一个函数指针func,它的参数类型为int ...
 - void fun() const{}; const void fun(){}; 和void const fun(){}; 的区别?
		
void fun() const{}; const void fun(){}; 和void const fun(){}; 的区别? const void fun(){};和void const fun ...
 - public <T> void show(T t),void前面的泛型T是什么作用
		
public <T>这个T是个修饰符的功能,表示是个泛型方法,就像有static修饰的方法是个静态方法一样. <T> 不是返回值,表示传入参数有泛型 public static ...
 
随机推荐
- 用selenium 自动爬取某一本小说章节及其内容,并存入数据库中
			
from selenium import webdriver import pymysql from selenium.webdriver.support.ui import WebDriverWai ...
 - Mybatis3中@SelectProvider传递参数
			
一.通常情况下我们使用实体类或者vo类来传递参数,这样可以在provider中直接使用#{param}来获取参数 二.在mybatis3.3以下版本只能传递一个参数,所以如果要传递多个参数必须封装成M ...
 - leetcode-263-丑数一
			
题目描述: 方法一:递归 class Solution: def isUgly(self, num: int) -> bool: if num == 0: return False if num ...
 - 区别 |mysql |Timestamp、time、datetime
			
Timestamp 时间格式为 类似 2012-11-11 12:23:00 ,默认值为当前时间 time 时间格式类似12:23:00 默认值为null datetime 时间格式类似2012-11 ...
 - swiper缩略图active切换失灵的解决思路
			
报错信息:Cannot read property ‘indexOf’ of undefined swiper. 来源是swiper.min.js,首先检查自己写的js配置是否有误,没有就调试插件源代 ...
 - C++11的闭包(lambda、function、bind)
			
c++11开始支持闭包,闭包:与函数A调用函数B相比较,闭包中函数A调用函数B,可以不通过函数A给函数B传递函数参数,而使函数B可以访问函数A的上下文环境才可见(函数A可直接访问到)的变量:比如: 函 ...
 - Struts功能详解——ActionForm
			
ActionForm ActionForm用于封装用户的请求参数,而请求参数是通过JSP页面的表单域传递过来的.因此应保证ActionForm的参数,与表单域的名字相同. ActionForm ...
 - NX11.0和VS2013 创建NXOpen 开发模版失败解决方案【转载】
			
转载自PLM之家论坛 NX11.0和VS2013 创建NXOpen 开发模版失败解决方案 首先我觉得这个可能是西门子疏忽,基本上每个大版本没有补丁前都有类似问题,下面来说说怎么解决吧.注意这里版本,N ...
 - 基于Netty的RPC架构学习笔记(五):netty线程模型源码分析(二)
			
文章目录 小技巧(如何看开源框架的源码) 源码解析 阅读源码技巧 打印查看 通过打断点调试 查看调用栈 小技巧(如何看开源框架的源码) 一断点 二打印 三看调用栈 四搜索 源码解析 //设置nioso ...
 - 配置Dubbo Demo遇到的坑之一---找不到dubbo.xsd文件
			
原文地址:https://blog.csdn.net/qq_36654870/article/details/80603302 1.dubbo.xsd文件不能读取 因为阿里http://code.al ...