#的作用
#的作用就是拼接成一个字符串,一个死的字符串,就相当于给这个字符加上了两个引号
#define FUNC(str) #str
FUNC(a);//这就是输出一个字符串a,其实就是“a”
##也是拼接字符串,但是这个拼成的是一个变量(任何类型都可以,string,int等等),不是一个死的字符串了
我这么举一个例子,就用string举例子
string str=“aaaaa”;
一个#,拼成的就相当于“aaaaa”,两个#,相当于str。
所以说用##的时候,他是一个变量,你得提前定义好了,才能使用,如果直接用就会报错
#define FUNC(a) #a
#define FUNC1(a) a##Zoffan
//下面这个不会报错
qdebug()<<FUNC(abc);
//这个拼接成一个带引号的字符串,你可以直接输出没问题
//但是下面这个就会报错了
qdebug()<<FUNC1(abc);
// 这个是拼接了 拼接成abcZoffan,但是这个不是带引号的字符串,这个一个变量,就相当于你随便写了一字符串,但是你没加“”,前面也没有类型声明,直接想输出这个,就报错了。