整理摘抄 宏定义笔记

基本格式:

  1. #define <宏名> (<参数表>) <宏体>
  2. 例: #define A(x) x

宏定义实际上是直接把代码中与宏名相关的关键字直接替换为宏体后才运作


良好的习惯

1 宏体最外面要加括号,反例:

  1. #define N 2+2
  2. void main()
  3. {
  4.    int a=N*N;
  5.    printf(%d”,a);
  6. }
因为2+2没有加括号所以计算机理解为a=2+2x2+2,=8,


2 宏体里的变量也要加括号,反例:

  1. #define area(x) x*x
  2. void main()
  3. {
  4.     int y = area(2+2);
  5.     printf(%d”,y);
  6. }
  7. 因为x没有加括号所以系统认为是y=area(2+2)=2+2*2+2=8
应该写成
  1. #define area(x) ((x)*(x))
 如果是自己编程使用宏替换,则在使用简单宏定义时,当字符串中不只一个符号时,加上括号表现出优先级,如果是带参数的宏定义,则要给宏体中的每个参数加上括号,并在整个宏体上再加一个括号。

特殊用法:
  1. #define Conn(x,y) x##y    返回x和y拼接在一起的整体,如果俩int拼起来就是高位x低位y的int,否则应该都是字符数组
  2. #define ToChar(x) #@x  在x的前面和后面加上单引号
  3. #define ToString(x) #x  在x的前面和后面加上双引号








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值