正在加载图片...
语句作编译故运行结果是输出了学号和成绩。 在程序的第一行宏定义中,定义NM表示字符串OK,其实也可以为任何字符串,甚至不 给出任何字符串,写为: #define num 也具有同样的意义。只有取消程序的第一行才会去编译第二个 printf语句。读者可上机试作。 2.第二种形式 # ifndef标识符 程序段1 #else 程序段2 fendi 与第一种形式的区别是将" ifdef〃改为" ifndef"。它的功能是,如果标识符未被 # define命令定义过则对程序段1进行编译,否则对程序段2进行编译。这与第一种形式的 功能正相反 3.第三种形式: #if常量表达式 程序段1 #else 程序段2 #endif 它的功能是,如常量表达式的值为真(非0),则对程序段1进行编译,否则对程序段 进行编译。因此可以使程序在不同条件下,完成不同的功能。 【例9.13】 #definer 1 float c.r.s. printf (input a number:) scanf(%f", &c) r=3.14159*c*C printf( area of round is: %f\n", r) S=ckc printf("area of square is: %f\n, s) #endif 本例中采用了第三种形式的条件编译。在程序第一行宏定义中,定义R为1,因此在条 件编译时,常量表达式的值为真,故计算并输出圆面积 上面介绍的条件编译当然也可以用条件语句来实现。但是用条件语句将会对整个源程序 进行编译,生成的目标代码程序很长,而采用条件编译,则根据条件只编译其中的程序段1 或程序段2,生成的目标程序较短。如果条件选择的程序段很长,采用条件编译的方法是十 分必要的语句作编译故运行结果是输出了学号和成绩。 在程序的第一行宏定义中,定义 NUM 表示字符串 OK,其实也可以为任何字符串,甚至不 给出任何字符串,写为: #define NUM 也具有同样的意义。只有取消程序的第一行才会去编译第二个 printf 语句。读者可上机试作。 2. 第二种形式: #ifndef 标识符 程序段 1 #else 程序段 2 #endif 与第一种形式的区别是将“ifdef”改为“ifndef”。它的功能是,如果标识符未被 #define 命令定义过则对程序段 1 进行编译,否则对程序段 2 进行编译。这与第一种形式的 功能正相反。 3. 第三种形式: #if 常量表达式 程序段 1 #else 程序段 2 #endif 它的功能是,如常量表达式的值为真(非 0),则对程序段 1 进行编译,否则对程序段 2 进行编译。因此可以使程序在不同条件下,完成不同的功能。 【例 9.13】 #define R 1 main(){ float c,r,s; printf ("input a number: "); scanf("%f",&c); #if R r=3.14159*c*c; printf("area of round is: %f\n",r); #else s=c*c; printf("area of square is: %f\n",s); #endif } 本例中采用了第三种形式的条件编译。在程序第一行宏定义中,定义 R 为 1,因此在条 件编译时,常量表达式的值为真,故计算并输出圆面积。 上面介绍的条件编译当然也可以用条件语句来实现。但是用条件语句将会对整个源程序 进行编译,生成的目标代码程序很长,而采用条件编译,则根据条件只编译其中的程序段 1 或程序段 2,生成的目标程序较短。如果条件选择的程序段很长,采用条件编译的方法是十 分必要的
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有