学习Linux misc驱动时遇到以下函数定义:
代码路径: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 */

作用:
宏定义中的省略号表示一串可变的参数, 这一串参数可用例程中的变量x加以引用。

用法举例:

#define MISC_MAJOR       10#define MODULE_ALIAS_MISCDEV(minor)               \MODULE_ALIAS("char-major-" __stringify(MISC_MAJOR)   \"-" __stringify(minor))

表示将__stringify中定义的变量字符串化,结果为:

#define MISC_MAJOR       10#define MODULE_ALIAS_MISCDEV(minor)               \MODULE_ALIAS("char-major-10-"__stringify(minor))

C语言中#define宏中省略号作用,例子:#define __stringify_1(x...) #x相关推荐

  1. 汇编语言中PTR的含义及作用

    汇编语言中PTR的含义及作用 mov ax,bx ;是把BX寄存器"里"的值赋予AX,由于二者都是word型,所以没有必要加"WORD"    mov ax,w ...

  2. go语言中fmt包中Print、Printf、Println输出相关函数的区别

    go语言中fmt包中Print.Printf.Println输出相关函数的区别 区别: Print系列函数将内容输出到系统的标准输出.其区别:Print函数式直接输出内容,Printf函数支持格式化输 ...

  3. C语言中scanf()函数中的是什么

    困惑初学者的C语言中scanf()函数中的&到底是什么 对于初学者而言,肯定有过这样一个困惑:为什么在使用scanf函数输入数据时有时需要在参数前加一个&,而有时却不用. 在回答&qu ...

  4. c语言中for循环逗号表达式,c语言中for循环中()里的三个表达式分别省略都

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:c语言中for循环 中()里的三个表达式分别省略都是什么意思?回答:将参加循环的语句括起来:末尾循环体){ 中间循环体: } 其中, ...

  5. c语言宏替换作用,C语言中,宏替换的替换规则

    简单来说:宏定义又称为宏代换.宏替换,简称"宏".是C提供的三种预处理功能的其中一种.复杂的请看下面,讲的很全. 下面的带参宏定义,多行宏定义,在Linux内核源码中很多.另外si ...

  6. C语言中void具体有什么作用

    1.概述   许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并 详述void及void指针类型的使用方法与技巧 ...

  7. C语言中,头文件的作用,头文件和源文件的关系(转)

    简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段  2.词法与语法分析阶段  3.编译阶段,首先编译成纯汇编语 ...

  8. C语言中,宏和全局变量的区别是什么?

    全局变量 是可以在程序中任何地方使用 而且是可以修改的 宏定义也可以在任何地方使用 但是不能在之后修改 数据类型没有限制的 宏的例子:#define 宏名 宏体 #define PI 3.141592 ...

  9. html语言中%3c%%%3e中语言,[工学]C语言程序设计习题解答.doc

    [工学]C语言程序设计习题解答 C程序设计习题 第一章 C 语言基础知识 1.1 选择题 1. C语言源程序的基本单位是_____. A. 过程 B. 函数 C. 子程序 D. 标识符 2. 下列各组 ...

最新文章

  1. linux /home recovering journal,linux报错:/dev/sdb2:recovering journal
  2. 【职场】程序员摆地摊都能月入过万,是真的吗?
  3. 为iOS 项目引入其它开发包 的方法
  4. PNG免扣+高清背景素材,帮电商美工\设计师快速出稿!
  5. 三星堆的青铜机器人_三星堆“青铜纵目人像”到底仿照谁的相貌?专家终于讲出真相...
  6. 关于React的一切(updating...)
  7. Apache服务停止:信号灯超时时间已到,指定的网络名不再可用
  8. UBT19:ubuntu安装qq与微信
  9. 在idea导入项目依赖爆红
  10. 学会宽容您的世界会很美丽
  11. 互联网行业的常用黑话,你知道几条?
  12. 6.MySQL列Cardinality(基数)
  13. java 保龄球游戏开发_2019-11-08-基于TDD实现的java版本的保龄球规则(实体类)
  14. 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2
  15. 浅析为什么没有朝代在武汉建都?
  16. intellij idea报错:类文件具有错误的版本 61.0, 应为 52.0
  17. Eclipse “cannot be resolved to a type”
  18. 2017去哪儿网前端面试心得
  19. 2.3.2 HMC硬件管理终端
  20. 萧乾升:4.17黄金白银TD实时最新策略,名师在线解套

热门文章

  1. 前端代码是怎样智能生成的
  2. 寄生电容和分布电容的区别
  3. Intellij IDEA优化配置(1)------Darcula主题的选择以及字体和颜色配置(基于Intellij IDEA 2019.1)
  4. 令人垂涎的武汉八大名吃
  5. ESMap平台在线开发工具介绍-易景空间地图
  6. 一个好用的项目工时管理系统
  7. 从头开始构建一台8位计算机 - 完整的零件清单
  8. 蓝牙笔记《蓝牙技术基础》
  9. ThinkPad电脑黑屏只显示鼠标
  10. git ssh配置文件 服务器_Linux 环境 搭建Git 服务器,并且修改SSH端口使用