#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