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

C小技巧之#ifdef #if

时间:2014-12-19 12:05:38      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   color   sp   on   div   log   bs   

  一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译。

  条件编译命令最常见的形式为:

 

1 #ifdef 标识符 
2     程序段1 
3 #else 
4     程序段2 
5 #endif    

  它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。
     其中#else部分也可以没有,即:
    

1 #ifdef 
2     程序段1 
3 #denif 

  还有一种形式,就是#if后面的是一个表达式,而不是一个简单的标识符:

1 #if 表达式 
2     程序段1 
3 #else 
4     程序段2 
5 #endif    

  它的作用是:当指定的表达式值为真(非零)时就编译程序段1,否则编译程序段2。可以事先给定一定条件,使程序在不同的条件下执行不同的功能。
   例如:输入一行字母字符,根据需要设置条件编译,使之能将字母全改为大写输出,或全改为小写字母输出。

 1 #define LETTER 1 
 2 main() 
 3 { 
 4     char str[20]="C Language",c; 
 5     int i=0; 
 6     while((c=str[i])!=\0)
 7     { 
 8         i++; 
 9         #if LETTER 
10             if(c>=a&&c<=z) c="c-32"; 
11         #else 
12             if(c>=A&&c<=Z) c="c"+32; 
13         #endif 
14         printf("%c",c); 
15     } 
16 }
17             

  运行结果为:C LANGUAGE
    现在先定义LETTER为1,这样在预处理条件编译命令时,由于LETTER为真(非零),则对第一个if语句进行编译,运行时使小写字母变大写。如果将程序第一行改为:
    #define LETTER 0
    

     则在预处理时,对第二个if语句进行编译处理,使大写字母变成小写字母(大写字母与相应的小写字母的ASCII代码差32)。此时运行情况为:
     c language

C小技巧之#ifdef #if

标签:style   blog   ar   color   sp   on   div   log   bs   

原文地址:http://www.cnblogs.com/goAhead-hust/p/4173461.html

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