在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
注:上述示例中的宏定义只是为了说明 # 和 ## 运算符的用法,实际中可能存在更多的边界情况和注意事项需要注意。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具