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…

  • 相关阅读:
    HTML <input> 标签
    HTML5 <input> type 属性
    静态页面与动态页面
    string::size_type 页73 size_t 页90
    template method(模板方法)
    C++中创建对象的时候加括号和不加括号的区别(转)
    _declspec(dllexport)和.def(转)
    智能指针
    C++中的delete加深认识
    工厂方法(整理自李建忠<C++设计模式>视频)
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/7668022.html
Copyright © 2011-2022 走看看