DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

1、宏定义中#的使用
在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。
例:

#define  A(x)        #x
#define     B(x, y)    #x"."#y
即     A(123) ------>  "123"
    B(123, 456) ------>  "123"".""456"

    std::string str1 = A(test);     //即str1 = “test”;
    std::string str2 = B(abc, 123); //即str2 = "abc"".""456"  ---> 等价于 str2 = "abc.123";

2、宏定义中##连接符的使用
##连接符号其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串,即##将其紧邻的前后两个子串联接起来。所以##的前后各必须存在一个子串,即n个##连接符连接n+1个子串。

#define  A(x)        test_##x  //test_是第一个子串,x是第二个子串,##则将两个子串连接到一起
#define  B(x, y)    x##y  //x是第一个子串,y是第二个子串
#define  C(x, y)    test_##x##_##y //test_是第一个子串,x是第二个子串,_是第三个子串,y是第四个子串
#define  D(x, y, z)    x##y##z
即:
    A(1) --->  test_1
    B(abc, 123) --->  abc123
    C(abc, 123) --->  test_abc_123
    D(test, 1, 23) ---> test123

3、宏定义中#@符号使用
在C语言的宏中,#@的功能是将其后面的宏参数字符化,即在其左右各加上一个单引号。

#define  A(a)  #@a
即:
    A(!) --->  '!'

posted on   DoubleLi  阅读(3781)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2021-05-12 微软、谷歌、亚马逊、Facebook等硅谷大厂91个开源软件盘点(附下载地址)
2021-05-12 BAT等大厂已开源的70个实用工具盘点(附下载地址)
2021-05-12 crash工具解析_这些Linux程序调试工具可以看到程序内部的很多小秘密
2021-05-12 Linux 问题故障定位常用分析工具集
2017-05-12 基于UDP高性能传输协议UDT doc翻译(一)
2017-05-12 基于UDT connect连接通信以及文件传输--服务端
2017-05-12 基于UDT connect连接通信以及文件传输--客户端
点击右上角即可分享
微信分享提示