#define中#与##的用法和区别
#define是C/C++中的预处理指令,用于定义宏,在编译前会把#define中的内容替换掉,#和##是预处理符号,#用于在宏定义中将一个参数转换为字符串,##用于连接两个参数,可以用于宏定义中组合多个参数。
#的用法:#号用于在宏定义中将一个参数转换为字符串,它可以用于定义一个字符串,例如:
#define STRING(x) #x
此宏定义的作用是将参数x转换为字符串。在使用时,可以这样使用:
STRING(hello world);
此时,编译器会把参数hello world转换为字符串“hello world”。
##的用法:##用于连接两个参数,可以用于宏定义中组合多个参数,例如:
#define CONCAT(x, y) x##y
此宏定义的作用是将两个参数x和y连接起来。在使用时,可以这样使用:
CONCAT(hello, world);
此时,编译器会把参数hello和world连接起来,变成字符串“helloworld”。
从上面可以看出,#和##的用法和区别是:#用于在宏定义中将一个参数转换为字符串,##用于连接两个参数,可以用于宏定义中组合多个参数。