c语言中宏定义的用法(CCdefine宏定义中特殊操作符的用法)
c语言中宏定义的用法(CCdefine宏定义中特殊操作符的用法)在实际应用中,上面几个特殊操作符经常用于日志的分级处理,还有下面几个宏:需要注意的是,省略号 ... 只能放在宏参数列表中的末尾。当需要把宏的参数 x 转换为字符串时,使用 #x 可以把参数名 x 转换成相应的字符串,该过程称为字符串化。标记粘贴运算符(##)可以合并宏中的两个标识符,即把宏定义中两个独立的标识符合并为一个标识符。__VA_ARGS__ 是一个可变参数宏,与省略号 ... 配合使用,用来替换省略号所代表的字符串。
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__:当前函数名称。