typedef定义函数类型的用法
来源:互联网 发布:贵阳大数据培训机构 编辑:程序博客网 时间:2024/05/18 00:45
typedef定义函数类型的用法
最近在CodeProject上看了段关于COM in plain C项目的代码,其中的一段关于typedef使用的代码一时让人有点模糊,代码如下:
typedef long SetStringPtr(char *);typedef long GetStringPtr(char *, long);typedef struct { SetStringPtr * SetString; GetStringPtr * GetString; DWORD count; char buffer[80];} IExample;long SetString(char * str){ return(0);}IExample * example;example->SetString = SetString;
看起来似乎是函数指针的用法,又不太确定,网上查了下资料,发现这是typedef的一种用法:为复杂的声明定义一个别名。参见:C++ typedef用法,文章介绍了typedef的多种用法和注意事项。
例如:
原声明: int *(*arr[5])(char *);
变量名为a,如想用一个新别名pFun替换arr,可以定义如下: typedef int *(*pFun)(char *);
原声明的最简化版: pFun arr[5];
当然这样的用法并不是很复杂,还有更复杂的用法可以参见上面的“C++ typedef用法”这篇文章。
下面来看下
typedef long SetStringPtr(char *);SetStringPtr * SetString;
第一句定义了一个新的类型,这个类型是一个返回long型,拥有参数char*的函数。
第二句用上面定义的函数类型定义了一个指针,自然此时的“SetString”就是一个函数指针(返回long型,拥有参数char*)了。所以才有了example->SetString = SetString;
。
常见函数指针的定义类似于下面这样
int (*func)(int,int);
这也说明C语言中typedef的用法还是很灵活的,稍不留神就可能误解,另外关于函数指针的用法参见:C++中函数指针的使用 ,里面有关于函数指针的一些用法和见解。
0 0
- typedef定义函数类型的用法
- typedef 定义函数类型
- typedef 定义函数类型
- typedef定义函数类型
- typedef定义函数类型
- typedef定义函数类型
- typedef定义函数类型
- typedef定义函数类型
- typedef和函数类型的定义
- typedef 定义数组类型用法
- typedef 定义数组类型用法
- typedef定义函数类型分析
- 用typedef定义函数类型
- 关于C++中typedef的用法定义函数指针
- 用typedef定义函数指针类型
- Nginx阅读: typedef定义函数指针类型
- C++------------typedef 函数指针类型定义
- (C++)用typedef定义函数指针类型
- 2017个人计划
- HTML标签元素的分类
- BIRT报表工具,直接导出EXCEL
- 深入理解DIP、IoC、DI以及IoC容器
- 一些国外优秀的elasticsearch使用案例
- typedef定义函数类型的用法
- Java时间戳是什么
- Tomcat中的Session小结
- sql单独获取时间的年月日部分
- 各版本Linux安装软件
- java:深入理解volatile关键字
- [Python标准库]decimal——定点数和浮点数的数学运算
- Java的类与对象
- C. Timofey and a tree codeforces 395 div2 C