1.#ifdef标识符程序段1#else程序段2#enf它的功能是,如果标识符已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),本格式中的#else可以没有,即可以写为:#ifdef标识符程序段#endif#defineNUMokmain(){structstu{intnum;char*name;charsex;floatscore;}*ps;ps=(structstu*)malloc(sizeof(structstu));ps——num=102;ps——name="Zhangping";ps——sex="M";ps——score=62.5;#ifdefNUMprintf("Number=%dScore=%f",ps——num,ps——score);#elseprintf("Name=%sSex=%c1.#if常量表达式程序段1#else程序段2#enf它的功能是,如常量表达式的值为真(非0),则对程序段1进行编译,否则对程序段2进行编译。因此可以使程序在不同条件下,完成不同的功能#defineR1main(){floatc,r,s;printf("inputanumber:");scanf("%f",&c);#ifRr=3.14159*c*c;printf("areaofroundis:%f",r);#elses=c*c;printf("areaofsquareis:%f",s);#endif}2.本例中采用了第三种形式的条件编译。在程序第一行宏定义中,定义R为1,因此在条件编译时,常量表达式的值为真,故计算并输出圆面积。上面介绍的条件编译当然也可以用条件语句来实现。但是用条件语句将会对整个源程序进行编译,生成的目标代码程序很长,而采用条件编译,则根据条件只编译其中的程序段1或程序段;2,生成的目标程序较短。如果条件选择的程序段很长,采用条件编译的方法是十分必要的。
标签:编译,三种,形式