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; 锁定初始化后的指针指向的值。
相关文章推荐
- pip安装lxml出错的问题解决
- 将Apache的.htaccess转换到nginx中
- 获取内核模块信息
- JSP简单练习-数组应用实例
- mongodb 中data lock解决方法
- oracle表分区详解
- Linux 命令------less
- jQuery的三种$()
- 1005. Spell It Right (20)
- KVO,NSNotification,delegate及block区别
- 监控入门-Linux的平均负载(load average)
- leetcode:Flatten Binary Tree to Linked List 【Java】
- 好老板坏老板
- 解决 Unable to execute dex: Multiple dex files define ...
- C#操作图片存入XML和显示XML图片
- PAT 1104. Sum of Number Segments (20)
- 赋值运算符函数异常安全
- 预约上门服务时间
- ERROR:invalid byte sequence for encoding"UTF8"
- asp.net实现调用带有输出参数的存储过程实例