首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。