linux系统中的“ __stringify() ”宏定义 详解
2023-09-14 09:09:19 时间
include/linux/stringify.h :
#ifndef __LINUX_STRINGIFY_H
#define __LINUX_STRINGIFY_H
/* Indirect stringification. Doing two levels allows the parameter to be a
* macro itself. For example, compile with -DFOO=bar, __stringify(FOO)
* converts to "bar".
*/
#define __stringify_1(x...) #x
#define __stringify(x...) __stringify_1(x)
#endif /* !__LINUX_STRINGIFY_H */
看上述源代码,
__stringify(x...) 这个宏的实际展开为: #x
其作用实际上就是 把 x 直接转换为字符串。其返回值就是字符串,而不是变量名。
如:
#define __ATTR(_name,_mode,_show,_store) { /
.attr = {.name = __stringify(_name), .mode = _mode }, /
.show = _show, /
.store = _store, /
}
假设我们这样使用 __ATTR:
__ATTR(var_name, 777, show_function, store_function)
那么,实际上 复制给 .attr.name 的值是 "var_name" ,而不是var_name 变量所代表的值。
相关文章
- Linux系统下安装rz/sz命令及使用说明
- 如何查看、修改Linux的系统时间
- linux-centos7- vim配置
- virtualbox虚拟机Linux系统与本地windows系统共享文件方法
- centos8(linux):编译升级python版本:从python3.6到python3.11
- Linux系统 PHP安装expect扩展详解
- Linux系统调优详解(十一)——IO调优之文件打开数目限制
- Linux系统centos下Nodejs安装方法
- Computer:Linux系统简介(Linux的基本思想、特点、各版本详解、系统功能、与Windows比较)、常见操作(Shell命令、常用的快捷键)之详细攻略
- Linux下的一些名词解释
- 【嵌入式开发】写入开发板Linux系统-模型S3C6410
- Linux系统之find日常使用大全
- Linux- 系统随你玩之--文件管理-双生姐妹花
- Linux- 系统随你玩之--玩出花活的命令浏览器-双生姐妹花
- 【Deepin 20 Beta系统】Linux系统安装Matlab R2019b详解
- 【Deepin 20系统】Linux系统修改文件后缀名
- 【Deepin 20系统】Linux系统安装N卡驱动前的安装gcc三种方法详解
- 探究linux系统之proc文件系统详解
- linux基本功之命令篇系列博文汇总(持续更新中......)
- Linux和Windows配置ssh免密码登录
- LINUX系统服务端口详解大全