在C语言中,#和##都是预处理指令。
#表示的是将参数转换为字符串
##表示黏贴,但是只能黏贴C语言除了关键字以外的合法标识符。在单一的宏定义中,最多可以出现#和##的组合形式。
我们来看看一个例子:
#include <stdio.h>
typedef int INT_32 ;
typedef void NULL_val ;
#define pri(x) printf("%d\n",x)
#define P(x) printf("%s---->%d\n",#x,x)
#define S(x) printf(""#x"---->%d\n",(x)*(x))
#define Zero 0
#define XNAME(x) x ## x
#define Function main
#define ret_val return
#define MAX(x,y) do \
{ \
if(x > y) { \
printf("x>y\n") ; \
break ; \
} \
else{ \
printf("x<y\n") ; \
break ; \
} \
}while(1);
static int i ;
#define For(lenth) for(i = 0 ; i < lenth ; i++) \
{ \
}
INT_32 Function(NULL_val)
{
INT_32 abc =1 ;
INT_32 b = 2 ;
P(abc);
P(b);
P(abc+b);
S(6);
pri(XNAME(100));
MAX(abc , b);
ret_val Zero ;
}
运行结果: