C语言中#和##的区别

95 阅读1分钟

在C语言中,#和##是预处理器中的两个不同的操作符。

#操作符用于将其后面的宏参数转换为字符串常量。

例如,当你使用#define预处理指令定义一个宏时,你可以在宏的定义中使用#操作符来将参数转换为字符串常量。例如:

#define STRINGIFY(x) #x
printf("%s\n", STRINGIFY(hello)); // 这将打印出"hello"

##操作符用于在宏定义中连接两个参数。它允许你将两个参数合并成一个单独的标识符。

例如:

#define CONCAT(x, y) x##y
int xy = CONCAT(3, 4); // 这将被展开为int xy = 34;

总之,#操作符用于将参数转换为字符串常量,而##操作符用于连接两个参数。