您的位置:首页 > 其它

define和typedef的区别

2016-03-08 11:19 295 查看

define和typedef的区别

#define 是宏命令,在编译前,由预处理器做替代,把程序中的所有遇到的词,全部替代。

简单理解为就是进行了简单字面上的替换。。

例如:

#define PINT int* 就是把所有的词 PINT 替换成 int * ,替换完毕再编译。

typedef int* pint; 是语句,由编译器在编译过程中编译处理。

int* x;

pint x;

两个声明是等价的。

区别1:

#define是宏命令,末尾不要加“;”号,不是语句,如果加了“;”号也会在预处理的时候进行替换。

typedef是一句完整的语句,末尾要加“;”号。

区别2:

typedef int* pint;

long int* x; 声明允许

long pint x; 声明不允许 (pint就是一个int型的指针)在自己的作用域内给一个已经存在的类型一个别名,不是简单的替换

#define PINT int*

long int* x; 声明允许

long PINT x; 声明允许 在这里只是进行字面上的简单的替换,不考虑实际的意义

区别3:

const pint p; 锁定 pint 类型,锁定初始化后的指针地址。

const PINT p; 预处理为const int * p; 锁定初始化后的指针指向的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: