在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 ; }运行结果: