浅谈C程序中条件编译

作者:弈宇风尘(英文ID:Kevin) 时间:2006.05.27
………………………………………………………………………………………………………………
在C的高级编程中会遇到我们在基础学习中没有遇到过的条件编译。
何谓“条件编译”,简单一点说:就是“程序的内容指定编译的条件”。
我们在写程序的时候,一般的情况是对源程序的所有行都参加编译,
但是我们希望部分行在满足条件的情况下,再执行编译。从而引出下
面的几种条件编译。
一般的条件编译有:
(1)#if
  形式:
    #if 表达式
    program 1
    #else
        program 2
    #endif
   这种格式与if...else...执行过程类似。
   表达式在这不做介绍,相信都明白,显得累赘。
  e.g:#if 0
       program
       #endif
       可以利用此代码注释,与/* 。。。。。。*/同。
(2)#ifdef
   ifdef:“如果有定义”。
   形式:
    #ifdef 标识符
    program 1
    #else
        program 2
    #endif 
  注:标识符被定义,则对program 1进行编译,否则编译program 2。
    但也可以不写#else
    #ifdef 标识符
        program
    #endif
    "标识符"用#define命令定义,
  #define:宏(macro)定义命令。
(3)#ifndef
   ifndef:“如果无定义”
  形式:
    #ifndef  标识符
    program 1
    #else
        program 2
    #endif
    这种形式的条件编译与第二种相同,但是执行不一样,主要区别:
ifdef和ifndef(即如果有定义和如果无定义)。
  也可以写成:
  #ifndef 标识符
        program
    #endif
实例:
  #define Letter 1
  main()
  {char str[20]="HACKBASE KEVIN",c;
  int i=0;
  while((c=str)!='/0')
   {i++;
     #if Letter
        if(c>='A'&&c<='Z')
          c=c+32;
     #else
        if(c>='a'&&c<='z')
          c=c-32;
     #endif
       printf("%c",c);
   }
  }
  输出结果:hackbase kevin
总结:
  条件编译的优点:编写大型程序,当需要加载多个模块。利用条件编译
可以使模块的选择更方便更节约时间,而且只改动几行代码即可。
  欢迎大家相互交流。

………………………………………………………………………………………………………………
参考书目:
    C语言高级实例解析    清华大学
    编译原理             高等教育出版社

………………………………………………………………………………………………………………
网络参考地址:
  弈宇风尘'Blog:http://phj.hackbase.com
    左撇子编程:http://blog.csdn.net/penghaijun/

你可能感兴趣的:(技术文章)