zoukankan      html  css  js  c++  java
  • 常见的条件编译

    背景:

      有些程序由于需求不一致,因而需要编译成不同版本的烧录文件,以屏幕为例,有各种尺寸的屏幕,其驱动文件几乎不一样,若是因为屏幕不一样而特意另外写一版软体,不仅麻烦而且不便于版本管理。因此条件编译在此处即可大显身手。

     正文:

    1、#if, #elif, #else, #endif条件编译。

    #if 条件 1
     代码段 1
    #elif 条件 2
       代码段 2
    ...
    #elif 条件 n
     代码段 n
    #else
     代码段 n+1
    #endif

    此含义既是:#if后面的常量表达式为“true”时,则编译其控制的代码段。

    即,条件1成立,则编译代码段1,条件1不成立,条件2成立,则编译代码段2······

    2、#ifdef, #else, #endif或#ifndef, #else, #endif条件编译

    #ifdef macro_name
    代码段 1
    #else
    代码段 2
    #endif
    或
    #ifndef macro_name
    代码段 2
    #else
    代码段 1
    #endif

    配合宏定义“#define”以上两段需要编译的代码段为相同代码段。(可在其它文件中define,但一定需要在此条件编译前define)

    字如其意,如果#define macro_name,则编译代码段1,若是未定义,则编译代码段2。

    3、还有一种被称之为宏函数条件编译,我倒觉得是#if的扩充罢了,即#if define(macro_name),若是defined了macro_name,则函数define(macro_name)返回真,否则返回假。用法其实和#if一个意思。

    欲知更详细的解释,请跳转至我参考的文章链接,那有更加详细的讲解。

    参考文章链接:http://blog.chinaunix.net/uid-20801390-id-3123529.html

    记录地点:深圳WZ

    记录时间:2016年3月23日

  • 相关阅读:
    05.scrapy框架的UA池和代理池
    04scrapy框架的日志等级和请求传参
    03.scrapy框架之递归解析和post请求
    02.scrapy框架持久化存储
    git
    01.scrapy框架简介和基础应用
    将配置文件由Dos存为unix格式
    利用alias命令别名对常用运维命令的调用 (给命令起别名)
    使用LVM方式扩容硬盘空间
    Vi编辑器添加删除多行注释
  • 原文地址:https://www.cnblogs.com/ChYQ/p/5310078.html
Copyright © 2011-2022 走看看