#define后面再加#号的作用:

#define后面如果再加一个 # 号,
那么这个符号的作用是文本参数“字符串化”,
即出现在宏定义字符文本中的#
把跟在后面的参数转换成一个C++字符串常量。
#define POUT1(x) printf(#x);
#define POUT2(x) printf(x);
POUT1(Hello World!);	//语法正确
POUT1("Hello World!");	//语法也正确
POUT2(Hello World!);	//语法错误
POUT2("Hello World!");	//语法正确

#define后面再加##号的作用:

#define后面如果再加# # 号,
那么这个##的作用是将两个字符文本连接成一个字符文本,
如果其中一个字符文本是宏定义的参数,
连接会在参数替换后发生。
#define SET1(arg) A##arg=arg;
#define SET2(arg) Aarg=arg;
SET1(1);	//宏替换将SET1(1)替换为A1=1;
SET2(1);	//宏替换将SET1(1)替换为Aarg=1