C/C++ define宏定义中特殊操作符的用法
C/C++通过 #define 命令定义一个宏,即用一个标识符来标识一个字符串,也称为“宏”。
#define HELLO 666
这样HELLO就是定义为666,所有用到HELLO的地方,在预处理时都会被替换为666。
使用 define 定义宏的基本用法见:C语言用#define定义宏的用法
这里主要介绍下宏定义中的特殊操作符,包括:#、##、... 和 __VA_ARGS__。
1、字符串化操作符 #
当需要把宏的参数 x 转换为字符串时,使用 #x 可以把参数名 x 转换成相应的字符串,该过程称为字符串化。
2、标记粘贴操作符 ##
标记粘贴运算符(##)可以合并宏中的两个标识符,即把宏定义中两个独立的标识符合并为一个标识符。
3、可变参数宏 ... 和 __VA_ARGS__
__VA_ARGS__ 是一个可变参数宏,与省略号 ... 配合使用,用来替换省略号所代表的字符串。
需要注意的是,省略号 ... 只能放在宏参数列表中的末尾。
在实际应用中,上面几个特殊操作符经常用于日志的分级处理,还有下面几个宏:
- __FILE__:当前源文件名称;
- __LINE__:当前行号;
- __FUNCTION__:当前函数名称。
相关文章
- Spring Boot中对接Twilio以实现发送验证码和验证短信码
- Spring Boot 3.5:这次更新让你连配置都不用写了,惊不惊喜?
- Spring Boot+Pinot实战:毫秒级实时竞价系统构建
- SpringBoot敏感配置项加密与解密实战
- SpringBoot 注解最全详解,建议收藏!
- Spring Boot 常用注解大全:从入门到进阶
- SpringBoot启动之谜:@SpringBootApplication如何让配置化繁为简
- Springboot集成Kafka原理_spring集成kafka的原理
- Spring Boot中@Data注解的深度解析与实战应用
- 大佬用1000字就把SpringBoot的配置文件讲的明明白白!