1、#操作符
他们平常采用带参宏时,数组中的宏模块是没被代替的。比如:
输入结论为:
不过,他们期许输入的结论是:
这该怎么做呢?只不过,C词汇容许在数组中包涵宏模块。在类表达式宏(带参宏)中,#号做为两个后处理操作符,能把标记转化成数组。比如,假如A是两个宏形参,所以#A是切换为数组”A”的形参名。那个操作过程称作数组化(stringizing)。下列流程模拟那个操作过程:
输入结论为:
这就达至他们想要的结论了。所以,#操作符能完成数组化(stringizing)的操作过程。
2、##操作符
与#操作符类似,##操作符可用于类表达式宏(带参宏)的代替部分。##操作符能把两个标记组合成两个标记。比如,可以这样做:
然后,宏XNAME(4)将展开x4。下列流程模拟##操作符的用法:
输入结论为:
注意:PRINT_XN()宏用#操作符组合数组,##操作符把标记组合为两个新的标识符。
只不过,##操作符在这里看来并没起到多大的便利,反而会让他们感觉到不习惯。但是,采用##操作符有时候是能提高封装性及流程的可读性的。如跑实时操作系统的stm32流程中,关于gpio的硬件驱动中有如下代码:
假设这样采用该宏:
该宏将展开为:
然后这就能很方便的将要采用的硬件引脚这么一一列出来,然后再拿去进行配置:
以上是关于#操作符与##操作符的讲义,用#操作符组合数组,##操作符把标记组合为两个新的标识符。如有错误欢迎指出。
你学习C词汇开发,无论你是大牛还是小白,是想转行还是想入行都能来了解一起进步一起学习!