当需要根据编译时配置,以不同方式执行某一任务时,一种可能的方法是,使用两个不同的函数,每次调用时,根据某些预处理器条件来的选择正确的一个:

void do_somehting()
{
…
#ifdef CONFIG_WORK_HARD
do_work_fast();
#else
do_work_at_your_leisure();
#endif
…
}

由于这需要在每次调用函数时都使用预处理器,内核开发者认为这种方法代表了糟糕的风格,更优雅的一个方案是根据选择不同的配置,来定义函数自身:

#ifdef CONFIG_WORK_HARD
void do_work()
{
…
}
#else
void do_work()
{
…
}
#endif
void do_something()
{
…
do_work();
…
}

转载于:https://my.oschina.net/fuyajun1983cn/blog/263796

条件编译在内核中的使用(技巧1)相关推荐

  1. Linux内核分析--内核中的数据结构双向链表续【转】

    在解释完内核中的链表基本知识以后,下面解释链表的重要接口操作: 1. 声明和初始化 实际上Linux只定义了链表节点,并没有专门定义链表头,那么一个链表结构是如何建立起来的呢?让我们来看看LIST_H ...

  2. Linux 内核中的 GCC 特性(zz)

    from:http://www.ibm.com/developerworks/cn/linux/l-gcc-hacks/ GCC 和 Linux 是出色的组合.尽管它们是独立的软件,但是 Linux ...

  3. linux中内核中machine_desc,Linux-内核-学习笔记(13):移植三星官方内核

    Linux-内核-学习笔记(13):移植三星官方内核 一.移植前的准备 当拿到源代码时,首先要在window下利用SourceInsight创建一个工程,并将uboot源代码加载到SI中,方便修改和查 ...

  4. linux内核中的循环缓冲区

    Linux内核中的循环缓冲区(circular buffer)为解决某些特殊情况下的竞争问题提供了一种免锁的方法.这种特殊的情况就是当生产者和消费者都只有一个,而在其它情况下使用它也是必须要加锁的. ...

  5. 大话Linux内核中锁机制之原子操作、自旋锁【转】

    转自:http://blog.sina.com.cn/s/blog_6d7fa49b01014q7p.html 多人会问这样的问题,Linux内核中提供了各式各样的同步锁机制到底有何作用?追根到底其实 ...

  6. Linux内核中的proc文件系统

    简介 procfs文件系统是内核中的一个特殊文件系统.它是一个虚拟文件系统: 它不是实际的存储设备中的文件,而是存在于内存中.procfs中的文件是用来允许用户空间的程序访问内核中的某些信息(比如进程 ...

  7. 苹果使用过程中的小技巧(合集)

    苹果使用过程中的小技巧(合集) 苹果机通电开机后,底层会进行一系列自检,若能通过,就回听到那有名的"咚...", 然后由openfirm引导OS启动. 如果自检遇到问题,则会发出1 ...

  8. linux内核中的设计模式

    创建型     Object Pool   Object Pool模式可以提升性能,尤其是在对象的分配.初始化成本高,使用频率高 但使用时间短的情况下.对象池可以设置对象池的大小和回收时间缓存预分配的 ...

  9. TCP/IP协议栈在Linux内核中的运行时序分析【万字长文】

    1 Linux概述 1.1 Linux操作系统架构简介 Linux操作系统总体上由Linux内核和GNU系统构成,具体来讲由4个主要部分构成,即Linux内核.Shell.文件系统和应用程序.内核.S ...

最新文章

  1. 剑指offer 11. 旋转数组的最小数字(很详细!)
  2. 32位十六进制浮点数转换为十进制浮点数的方法
  3. 软件开发生命周期模型 瀑布模型、增量模型、原型模型、螺旋模型、喷泉模型总结...
  4. Apache Flink新场景——OLAP引擎
  5. 【异常(待解决)】org.apache.http.NoHttpResponseException: api.weixin.qq.com:443 failed to respond
  6. 使用idea 把项目上传到 svn
  7. Draco使用笔记(1)——图形解压缩
  8. span超过容器自动换行
  9. 文本域中只允许输入特定长度的字符
  10. 语音论文优选:口语理解A Streaming End-to-End Framework For SLU
  11. maya arnold自定义aov分层灯光组添加方法
  12. 《整洁代码之道》学习书摘(二)第一章——整洁代码
  13. Java单元测试实践-11.Mock后Stub Spring的@Component组件
  14. 递归、迭代和分治(2):递归的典型例子
  15. 中高级JAVA工程师-面试题汇总
  16. 马克思与他的脑机接口
  17. java static void_java中static关键字
  18. 金融入门——质押式回购与买断式回购
  19. Vim注释插件vim-commentary
  20. 3DCAD图纸转2D(DXF)图纸通用解决方案文稿

热门文章

  1. IE9(测试版)浏览器实用快捷键使用方法
  2. Linux磁盘配额(一)
  3. 版本信息文件、虚拟环境创建
  4. 机房几台终端电脑,本地连接中不停的出现连接和断开,网络不通,解决方法...
  5. [数据库]简单SQL语句总结
  6. my ax 4 faq
  7. windows_7_64位下配置mysql64位免安装版
  8. SAP NetWeaver 业务运作面向服务平台 介绍
  9. apache solr rce cve-2019-0192 分析
  10. linux ssh连接 出现 Host key verification failed 错误 解决方法