define的使用

#表示这是一条预处理指令

1,  用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)

#define SECOND_PER_YEAR (356*24*60*60)UL

注意点:

  1. 预处理指令结尾无分号
  2. 表达式将使一个16位机的整型数溢出-因此要用到无符号长整型符号U

2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个

#define MIN(a,b) ((a)>=(b)?(b):(a))

3. 宏只是简单的文本替换

#define COUNT(M) M*M
2 int x=6;
3 print(COUNT(x+1));
4 print(COUNT(++X));
5 结果输出:13   和56

COUNT(x+1)被替换成COUNT(x+1*x+1) 即为:6+1*6+1=13

CUNT(++x)被替换成++x*++x即为7*8=56而不是想要的7*7=49,连续前置自加加两次

++x 先将x本身的值加1 然后参与表达式中计算 

 x++先在当前表达式中使用x的值,然后再将x的值自增1

4.#的使用:

#的作用就是将#后边的宏参数进行字符串的操作,也就是将#后边的参数两边加上一对双引号使其成为字符串。例如a是一个宏的形参,则替换文本中的#a被系统转化为"a",这个转换过程即为字符串化

复制代码
1 #define TEST(param) #param
2 
3 char *pStr=TEST(123);
4 printf("pSrt=%s\n",pStr);
5 
6 输出结果为字符  ”123“

5,##运算符

##运算符也可以用在替换文本中,它的作用起到粘合的作用,即将两个宏参数连接为一个数

1 #define TEST(param1,param2) (param1##param2)
2 
3 int num =TEST(12,34);
4 printf("num=%d\n",num);
5 
6 输出结果为:num=1234

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值