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

    所谓“条件编译”,是对部分内容指定编译的条件,使其只在满足一定条件才进行编译。

    常用形式

    多条件编译

    #if defined(MACRO1) || defined(MACRO2)
        code
    #elif defined(MACRO3)
        code
    #endif

    常用格式

    #ifdef MACRO
        code
    #else
        code
    #endif
    #ifndef MACRO
        code
    #else
        code
    #endif
    #if 表达式
        code
    #else
        code
    #endif

    示例

    #include <stdio.h>
    #include <string.h>
    
    #define BUF_LEN 256
    
    int main()
    {
        char buf[BUF_LEN];
    
        snprintf(buf, sizeof(buf), "%s", "default");
    
    #if defined(POWER) || defined(PPP)
    //#if define POWER
    //#ifdef POWER
        snprintf(buf, sizeof(buf), "%s", "POWER||PPP");
    #elif defined(PPPOE)
        snprintf(buf, sizeof(buf), "%s", "PPPOE");
    #endif
    
        printf("power:%s
    ", buf);
        return 0;
    }

    执行结果:

    yuxi@ubuntu:~/test/macro$ gcc -DPPP define.c 
    yuxi@ubuntu:~/test/macro$ ./a.out 
    power:POWER||PPP
    yuxi@ubuntu:~/test/macro$ gcc -DPPPOE define.c 
    yuxi@ubuntu:~/test/macro$ ./a.out 
    power:PPPOE
    yuxi@ubuntu:~/test/macro$ gcc define.c 
    yuxi@ubuntu:~/test/macro$ ./a.out 
    power:default

    常见的预处理指令

    1. #空指令,无任何效果
    2. #include包含一个源代码文件
    3. #define定义宏
    4. #undef取消已定义的宏
    5. #if如果给定条件为真,则编译下面代码
    6. #ifdef如果宏已经定义,则编译下面代码
    7. #ifndef如果宏没有定义,则编译下面代码
    8. #elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码
    9. #endif结束一个#if……#else条件编译块
    10. #error停止编译并显示错误信息

    参考:

    C/C++预处理指令#define,#ifdef,#ifndef,#endif…

  • 相关阅读:
    图片预加载的JS代码
    JavaScript实现漫天飞花及文字滚动特效的代码
    判断远程图片是否存在的JavaScript代码
    dos批处理命令详解
    内存虚拟盘软件XMSDSK的使用
    医学论坛(收集)
    velocity
    java开源项目 源代码
    开放源代码的全文检索引擎Lucene
    批处理命令大全
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/7668022.html
Copyright © 2011-2022 走看看