a##b 实际上就是ab,但要注意实际的用法:
这应该算一个预编译的运算,在宏的定义中经常用到,比如为了和防止别人定义的变量冲突我们可以定义一个宏,使我们自己的变量都带一个my_前缀,宏定义如下:
#define MY_DECLARE(type,name)\
   type my_##name;

读者可以看看下面的例子程序:

#include<stdio.h>

#define MY_DECLARE(type,name)\
type my_##name;

void main(){
 MY_DECLARE(int,a) // 实际上宏展开为:int my_a;
 my_a=88;
  printf("%d\n", my_a);
}


源码:


#include<stdio.h>
#define MY_DECLARE(type,name)\
	type my_##name;
void main()
{
	MY_DECLARE(int,a)  //int my_a
		my_a = 88;
	printf("%d\n",my_a);
}