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
原创粉丝点击