typedef关键字

      使用typedef来定义程序员自己的数据类型有3个好处:第一,使用typedef定义类型可以避免声明变得非常长;第二,如果程序员在以后修改程序中所使用的一些数据的类型时,只需要修改一个typedef声明就可以了,这比在程序中一个变量,一个变量的修改要容易的多,而且也避免漏掉某个变量声明的风险;第三,对于需要在不同处理器之间进行移植的代码,通过typedef也可以增加代码的可移植性。请看下面的例子:

typedef unsigned short U16;

typedef unsigned int U32;//如果移植到int为16位的机器,则只需修改这个定义即可

typedef void* P_VOID;

typedef struct message_body

{

  U16 messageType;

  U16 message;

  U32 lparam;

  P_VOID data;

  U16 wparam;

  U16 reserved;

}MSG,*PMSG;

PMSG MessagePtr;//定义一个指向消息结构的指针
MessagePtr = (PMSG)malloc(sizeof(MSG));//申请一块内存空间来存放消息
//如果不采用上面的方式,就得采用下面的方法申请存储器
MessagePtr = (struct message_body *)malloc(sizeof(struct message_body));

 注意:好的编程风格推荐程序员使用typedef关键字而不是#define宏来定义新的数据类型,这其中的一个原因是#define宏来定义新的数据类型,这其中的一个原因是#define宏无法正确的处理指针类型。

比如:

1 #define d_ptr_to_char char*
2 d_ptr_to_char a,b;

 正确声明了变量a为一个指向char类型的指针变量,但是变量b却被声明为一个char类型的整数。在定义更为复杂的类型(比如函数指针或者指向数组指针)时,使用typedef关键字更为合适   。

posted @ 2012-09-14 16:21  general001  阅读(196)  评论(0)    收藏  举报