C语言笔记:运算符与运算符

2023-05-28 0 284

1、#操作符

他们平常采用带参宏时,数组中的宏模块是没被代替的。比如:

C语言笔记:运算符与运算符

输入结论为:

C语言笔记:运算符与运算符

不过,他们期许输入的结论是:

C语言笔记:运算符与运算符

这该怎么做呢?只不过,C词汇容许在数组中包涵宏模块。在类表达式宏(带参宏)中,#号做为两个后处理操作符,能把标记转化成数组。比如,假如A是两个宏形参,所以#A是切换为数组”A”的形参名。那个操作过程称作数组化(stringizing)。下列流程模拟那个操作过程:

C语言笔记:运算符与运算符

输入结论为:

C语言笔记:运算符与运算符

这就达至他们想要的结论了。所以,#操作符能完成数组化(stringizing)的操作过程。

2、##操作符

与#操作符类似,##操作符可用于类表达式宏(带参宏)的代替部分。##操作符能把两个标记组合成两个标记。比如,可以这样做:

C语言笔记:运算符与运算符

然后,宏XNAME(4)将展开x4。下列流程模拟##操作符的用法:

C语言笔记:运算符与运算符

输入结论为:

C语言笔记:运算符与运算符

注意:PRINT_XN()宏用#操作符组合数组,##操作符把标记组合为两个新的标识符。

只不过,##操作符在这里看来并没起到多大的便利,反而会让他们感觉到不习惯。但是,采用##操作符有时候是能提高封装性及流程的可读性的。如跑实时操作系统的stm32流程中,关于gpio的硬件驱动中有如下代码:

C语言笔记:运算符与运算符

假设这样采用该宏:

C语言笔记:运算符与运算符

该宏将展开为:

C语言笔记:运算符与运算符

然后这就能很方便的将要采用的硬件引脚这么一一列出来,然后再拿去进行配置:

C语言笔记:运算符与运算符

以上是关于#操作符与##操作符的讲义,用#操作符组合数组,##操作符把标记组合为两个新的标识符。如有错误欢迎指出。

你学习C词汇开发,无论你是大牛还是小白,是想转行还是想入行都能来了解一起进步一起学习!

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务