码迷,mamicode.com
首页 > 其他好文 > 详细

条件编译

时间:2017-10-14 20:05:06      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:log   代码   pos   www.   编译   div   printf   nbsp   常用   

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

常用形式

多条件编译

#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\n", 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…

 

条件编译

标签:log   代码   pos   www.   编译   div   printf   nbsp   常用   

原文地址:http://www.cnblogs.com/embedded-linux/p/7668022.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!