Goforyouqp  

在C语言中,#和##是用来操作宏定义中参数的特殊符号。

#(字符串化运算符):将参数转换为一个字符串常量。

例如:

#define STR(x) #x

STR(hello world) // 将会被转换为 "hello world"

##(连接运算符):用于将两个参数连接成一个符号。例如:

#define CONCAT(x, y) x##y

int CONCAT(a, b) = 10;

// 上面这一行宏定义等价于以下代码
// int ab = 10;

需要注意的是,## 运算符只能用于连接形参,在定义宏时不能使用##运算符连接文本。

// 这样是无法通过编译的
#define MY_MACRO(x) x##world
MY_MACRO(hello) // 等价于 helloworld

// 应该这样定义
#define MY_MACRO(x) my_ ## x ## _world
MY_MACRO(hello) // 等价于 my_hello_world

注:上述示例中的宏定义只是为了说明 # 和 ## 运算符的用法,实际中可能存在更多的边界情况和注意事项需要注意。

posted on 2023-06-20 11:24  嵌入式小白-小黑  阅读(76)  评论(0编辑  收藏  举报  来源