typedef 和 #define

1.#define是一个预处理指令,在预编预处理时进行简单的替换,不作正确性检查;

2.typedef是在编译时处理的,typedef不是简单的替换,而是采用如同定义变量那样的方法来声明一种类型;

3.typedef一个比较难且常用的用法可以参考以下内容。

http://blog.chinaunix.net/uid-26963688-id-3466311.html


#define FLOATPTR float*

FLOATPTR a,b;

b是什么类型的变量呢,如果大意的话我们会误认为b位float *,而实际上b是float型;#define是C语言中的宏定义,一般可以分为两种,即是带参数的宏定义,也可以是不带参数的宏定义。我们可以作简单的替换就是float *a,b;


#define MIN(x,y) x<y?x:y;如果调用MIN(3,2),即是3<2?3:2,符合程序的目的,但如果调用MIN(1+2,2),即是1+2<2?1+2:2,因为宏不做表达式求解,只会简单带入;这种情况下很显然是不符合程序的目的;


综上所述对于不带参数的宏定义应注意以下几点:

1.宏定义末尾不加分号;;

2.宏定义分行写时行尾要加‘\';

3.可以用#undef命令终止宏定义的作用域;


对于带参数的宏定义应注意以下几点:

1.宏名和参数的括号间不能有空格;

2.宏的参数要加括号;

3.宏不做表达式求解;


以上内容摘自李亚锋先生的《经典C面试 真题精讲》


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值