我们几乎总是希望用内联函数代替预处理器宏,但是有三个地方比较式适合使用预处理宏
(1)字符串定义
(2)字符串拼接
(3)标志粘贴
字符串拼接:#define DEBUG(X) cout<<#x"="<<x<<endl;//在这里字符串x和字符串=拼接在一起
上面的覅难以可以打印任何变量的值
标志粘贴:标志粘贴直接用##实现,在写代码时是非常有用的,它允许设两个标识符,并把他们粘贴在一起自动产生一个新的标识符
#define FIELD(a) char* a##_string;int a##_size;
class Record{
FIELD(one);
FIELD(two);
FIELD(three);
};
每次调用FIELD()宏,都将产生一个保存字符数组的标识符,和一个保存字符串长度的标识符。