在C++中,##
和 #
是两个不同的预处理符号。这些符号都是在C++的预处理阶段使用的,用于在代码编译之前对文本进行操作。
#
(字符串化操作符): 用于将宏参数转换为字符串常量。
#define STRINGIZE(x) #x
const char* str = STRINGIZE(Hello); // str 的值为 "Hello"
##
(连接操作符):用于将两个宏参数连接在一起,仅仅是连接在一起,它并不知道宏参数会传入什么,以及连接在一起后是什么,同理于宏替换,仅仅是简单粗暴的替换。
#define CON(x, y) x##y
int xy = CON(3, 4); // 定义了一个名为 "xy" 的整数变量,其值为 34