梦书之家(移动开发)

你有一个苹果,我有一个苹果,我们交换一下,一人还是一个苹果;你有一个思想,我有一个思想,我们交换一下,一人就有两个思想。 ——肖伯纳

导航

define与typedef数据类型表示的区别zz

转自:http://www.zahui.com/html/9/18091.htm    作者:Daizh
      为了简洁和书写方便,我们通常会对数据类型进行类型的表示或别名,通常有两种方法可以实现,即define宏和typedef。
    
例如:#define STU struct stu在程序中可用STU作变量说明:
     STU body[5], *p;
    
#define INTEGER int在程序中即可用INTEGER作整型变量说明:
     INTEGER a,b;
    
应注意用宏定义表示数据类型和用typedef定义数据说明符的区别。宏定义只是简单的字符串代换,是在预处理完成的,而typedef是在编译时处理的,它不是作简单的代换,而是对类型说明符重新命名。被命名的标识符具有类型定义说明的功能。请看下面的例子:
    
#define PIN1 int*
    typedef (int*) PIN2;
   
从形式上看这两者相似,但在实际使用中却不相同。下面用PIN1PIN2说明变量时就可以看出它们的区别:PIN1 a,b;在宏代换后变成 int *a,b;表示a是指向整型的指针变量,而b是整型变量。然而:PIN2 a,b;表示a,b都是指向整型的指针变量。因为PIN2是一个类型说明符。由这个例子可见,宏定义虽然也可表示数据类型, 但毕竟是作字符代换。在使用时要分外小心,以避出错。


 

posted on 2005-12-23 12:23  梦书  阅读(422)  评论(0编辑  收藏  举报