首页 > 代码库 > C小技巧之#ifdef #if

C小技巧之#ifdef #if

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

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

 

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