首页 > 代码库 > 第六章 预处理器
第六章 预处理器
宏就是文字展开,实际中能够展开写出来发现错误。
6.2 宏并非函数
宏定义一个函数时,
1、要把每一个參数用括号括起来
2、同一时候也要把整个表达式括起来。
3、要确保宏中的參数没有副作用
#define max(a,b) ((a)>(b)?
(a):(b))
max(big,x[i++]),这时++有可能被计算两次,产生了副作用。
宏有可能由于自增减操作产生副作用。也有可能产生很庞大的表达式。
消除if else的副作用:
#define assert(e) \
((void)((e)||_assert_error(__FILE__,__LINE__)))
6.4 宏并非类型定义
#define T1 struct foo *
typedef struct foo *T2
T1 a,b; //声明被扩展为struct foo *a,b; b不是指针 。
T2 a,b;
第六章 预处理器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。