#在预处理器中的特殊用法

#在预处理中有3个特殊用法:字符串定义、字符串串联和标志粘贴。

1)字符串定义的完成是用 #指示,它容许设一个标识符并把它转化为字符串,然而字符串串联发生在当两个相邻的字符串没有分隔符时,在这种情况下字符串组合在一起。在写调

试代码时,这两个特征是非常有效的。

例如,

#define PRINT(X) cout<<#X " = " << X << endl

当我们在代码中要打印一个表达式的值,比如a+b+c时,就可以直接调用PRINT(a+b+c).

打印结果是:a+b+c=10。

这比自己手工输入代码,要高效:

cout<<"a + b + c = " << X << endl

2)标示粘贴

可以将两个字符串连接在一起,作为一个新的标识符。如下面定义:

#define FIELD(A) char* A##_string; int A##_size

在给定的字符串后分别连接_string和_size,构成新的标识符。
如下面的类定义中:

class Record {
  FIELD(one);
  FIELD(two);
  FIELD(three);
  // ...
};
实际生成的变量为:one_string, one_size, two_string, two_size, three_string, three_size。


总之,预处理玩的是文字替换的游戏,#相当于是占位符的作用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值