C/C++宏定义中井号(#)的含义

#include <iostream>

#define dprint(expr) printf(#expr"=%d\n", expr)
#define cat(x, y) x##y

int main(){
	int a = 1, b = 2;
	dprint(a+b);
	int ans123 = 9;
	dprint(cat(ans, 123)); //cat(ans, 123) is ans123
	system("pause");
}

输出结果为:
a+b=3
cat(ans, 123)=9

 

解释(在宏中):

#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。

## 被称为连接符(concatenator),它把参数产开并转化成字符串即用""引起来。里面的空格分割全部改为一个,并且会自动添加转义字符'/'。

你可能感兴趣的:(C/C++宏定义中井号(#)的含义)