- #:是一种运算符,只能出现在带参的宏的替换文本中,将跟在后面的参数装换成一个字符串常量。
#define PF_INT(i) printf(#i"=%d\n",i)
void main()
{
int x=100;
PF_INT(x);
}
预处理后:
printf("x""=%d\n",x);
C语言常将相邻的字符串合并处理:
printf("x=%d\n",x);
- ##:是一种运算符,是将两个运算对象连接在一起,只能出现在带参宏定义的替换文本中。
如:#define NUM(h,t,u) h##t##u
假设u代表个位,t代表十位,h代表百位,则x=NUM(1,2,3)后,x=123。
注:##也可以用于拼接一些开头一样,尾巴不一样的宏,这样的宏一般用于描述代表特定意义的对象的不同状态等。宏开头固定,根据不同条件则选择拼接不同尾巴,最后拼接的字符串代表一个具体的状态等。