typedef用法(转载记录)
来源:互联网 发布:mac 菜单 快捷键 编辑:程序博客网 时间:2024/04/27 19:19
typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。
在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。
typedef的使用方法如下:
typedef existing_type new_type_name ;
注意:typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。
typedef的最简单使用
typedef int size;typedef unsigned int WORD;第一个声明定义了一个char的同义词,名字为size,你可以在任何需要int的上下文使用size。
第二个声明定义了一个unsigned int的同义词,名字为WORD,你可以在任何需要int的上下文使用WORD。
typedef和数组,指针
我们可以不用象下面这样重复定义有 81 个字符元素的数组char line[81]; char text[81];定义一个 typedef,每当要用到相同类型和大小的数组时,可以这样
typedef char Line[81]; Line text, secondline;同样,可以象下面这样隐藏指针语法
typedef char * pstr; pstr str = "abc";
typedef和函数
函数指针一般用于回调,当我们的程序中有以下函数:void printHello(int i);
然后我们要定义一个函数指针,指向printHello,并且调用这个方法,代码如下:
void (*pFunc)(int);pFunc = &printHello;(*pFunc)(110);其中void (*pFunc)(int)是声明一个函数指针,指向返回值是void,调用参数是(int)的函数,变量名是pFunc,pFunc就是函数指针了,以前是函数指针的简单用法。
大家可以看到,声明一个函数指针是比较复杂的,尤其是当你要在多处地方声明同一个类型的函数指针变量,代码更加复杂,所以有下面简化的做法:
typedef void (*PrintHelloHandle)(int);PrintHelloHandle pFunc;LWIP中typedef的应用
/** Function prototype for netif->input functions. This function is saved as 'input' * callback function in the netif struct. Call it when a packet has been received. * * @param p The received packet, copied into a pbuf * @param inp The netif which received the packet */typedef err_t (*netif_input_fn)(struct pbuf *p, struct netif *inp);
/** This function is called by the network device driver * to pass a packet up the TCP/IP stack. */ netif_input_fn input;
0 0
- typedef用法(转载记录)
- typedef 的用法(转载)
- typedef 的用法 (转载)
- typedef 用法小结【转载】
- [转载]Typedef 用法详解
- 转载 typedef用法
- 转载typedef用法
- typedef用法转载
- typedef用法(转载)
- typedef和#define的用法与区别(转载)
- (转载)typedef使用
- typedef用法(1)
- (转)typedef用法小结
- typedef用法(c++)转发
- typedef用法小结(转)
- typedef 的用法(1)
- typedef的用法(2)
- typedef 用法详解(一)
- 可以左右滑动查看内容的文本框
- Android Studio 生成Release版,报Warning的解决办法
- 【hdu 1517】A Multiplication Game
- python 学习2:生成器,迭代器,装饰器
- NOSQL数据库浅谈(一):MemCache解读
- typedef用法(转载记录)
- jsp、struts、spring、mybatis实现前端页面功能模块化拆分
- Android中ImageLoader的用法
- Protocol buffer数据传递
- 平衡二叉树总结三:treap树(树堆)
- 解决json序列化有多对一和多对多关系的对象时造成死循环的问题
- Android之自定义view星星评价(可滑动)
- javascript中的this与函数讲解
- centos 7快捷方式建立