快捷搜索:  汽车  科技

c语言中宏定义的用法(CCdefine宏定义中特殊操作符的用法)

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

c语言中宏定义的用法(CCdefine宏定义中特殊操作符的用法)(1)

C/C 通过 #define 命令定义一个宏,即用一个标识符来标识一个字符串,也称为“宏”。

#define HELLO 666

这样HELLO就是定义为666,所有用到HELLO的地方,在预处理时都会被替换为666。

使用 define 定义宏的基本用法见:C语言用#define定义宏的用法

这里主要介绍下宏定义中的特殊操作符,包括:#、##、... 和 __VA_ARGS__。

1、字符串化操作符 #

当需要把宏的参数 x 转换为字符串时,使用 #x 可以把参数名 x 转换成相应的字符串,该过程称为字符串化。

c语言中宏定义的用法(CCdefine宏定义中特殊操作符的用法)(2)

2、标记粘贴操作符 ##

标记粘贴运算符(##)可以合并宏中的两个标识符,即把宏定义中两个独立的标识符合并为一个标识符。

c语言中宏定义的用法(CCdefine宏定义中特殊操作符的用法)(3)

3、可变参数宏 ... 和 __VA_ARGS__

__VA_ARGS__ 是一个可变参数宏,与省略号 ... 配合使用,用来替换省略号所代表的字符串。

c语言中宏定义的用法(CCdefine宏定义中特殊操作符的用法)(4)

需要注意的是,省略号 ... 只能放在宏参数列表中的末尾。

在实际应用中,上面几个特殊操作符经常用于日志的分级处理,还有下面几个宏:

  • __FILE__:当前源文件名称;
  • __LINE__:当前行号;
  • __FUNCTION__:当前函数名称。

c语言中宏定义的用法(CCdefine宏定义中特殊操作符的用法)(5)

猜您喜欢: