#预处理命令常见考点

预处理命令常见考点

*了解:
预处理命令:以#开头,独立成行,行尾不用加分号(即可以加,也可以不加)
宏定义: #define 标示符 字符序列
宏定义在编译前会做宏展开(用字符序列替换掉代码中的标示符),替换的过程被称为宏展开;
说明;
1.宏名一般习惯用大写字母表示,以便与变量名相区别,但这并非规定,也可用小写字母。
2.使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量,
3.宏定义是用宏名代替一个字符串,也就是作简单的置换,不作正确性检查。
4.宏定义不是 c语句,不必在行末加分号;
5.#define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本文源文件结束。
6.可以用#undef命令终止宏定义的作用域。
7.在进行宏定义时,可以引用已定义的宏名,可以层层置换。
优点:
1.书写便利;
2.可读性好;
3.便于修改;
易错点:
1.标示符问题
#define T a+b时,代码中的int Ta;中的T不会被替换掉,其中的T不独立,不是标示符
其次, 代码中的printf(“T=%d\n”,d);中的T在字符串中不是标示符;
2.括号问题(表达式括号一个都不能少)
#define Add(a,b) a+b
int a=4,b=2,c=8;求d=a乘ADD(b,c);的值;
输出结果为:16
原因:d=a乘b+c=4乘2+8=16,define定义只替换,若想先算a+b,需写成 #define Add(a,b) (a+b)
表达式括号一个都不能少:又如:(((a)<(b) )?(a):(b) )

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值