首页 > 代码库 > define与typedef的区别
define与typedef的区别
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的区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。