码迷,mamicode.com
首页 > 其他好文 > 详细

define与typedef的区别

时间:2016-11-14 15:35:55      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:原则   type   类型   poi   限制   out   efi   不同   引用   

define:

  发生在预处理阶段,也就是编译之前,仅仅文本替换,不做任何的类型检查

  没有作用域的限制

typedef:

  多用于简化复杂的类型声明,比如函数指针声明:typedef bool (*funcPoiinter) (int, double);

  给已有类型定义一个别名(类似的 引用是给已有对象或者变量一个别名)

  在编译阶段有效,具有类型检查的功能

  定义域平台无关的数据类型。比如:size_t

  有自己的作用域(函数内定义只能函数内部使用)

  对指针的修饰作用不同:

  

typedef int * pint;
#define PINT int *
int i1 = 1, i2 = 2;
const PINT p1 = &i1;//p可以更改,p指向的内容不可以更改,相当于const int *p 或 int const *p;
const pint p2 = &i2;//p不可以更改, p指向的内容可以更改,相当于int *const p; 
pint s1, s2;
PINT s3, s4;

void testPointer()
{
    cout<<"p1:"<<p1<<"  *p1:"<<*p1<<endl;
    p1 = &i2;
    //*p1 = 3; 报错
    cout<<"p1:"<<p1<<"  *p1:"<<*p1<<endl;
    //p2 = &i1; 报错
    *p2 = 3;
    cout<<"p2:"<<p2<<"  *p2:"<<*p2<<endl;
}

  ps:关于Const的修饰原则:从左至右,依次结合,const就近结合。在另一篇博文中。

 

define与typedef的区别

标签:原则   type   类型   poi   限制   out   efi   不同   引用   

原文地址:http://www.cnblogs.com/luntai/p/6061463.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!