C言语教程第九章:预处理(4)


2. 第二种方式:
#ifndef 标识符
按次段1
#else
按次段2
#endif
与第一种方式的区别是把“ifdef”改为“ifndef”。它的听从是,假设标识符未被#define下令界说过则对按次段1截止编译, 否则对按次段2截止编译。这与第一种方式的听从正相反。

3. 第三种方式:
#if 常量表达式
按次段1
#else
按次段2
#endif
它的听从是,如常量表达式的值为真(非0),则对按次段1 截止编译,否则对按次段2截止编译。因而可以使按次在差异前提下,完成差异的听从
#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, 天生的目的按次较短。假设前提选择的按次段很长, 授与前提编译的设施是极度需要的。

本章小结
1. 预处理听从是C言语特有的听从,它是在对源按次正式编译前由预处理按次完成的。按次员在按次顶用预处理下令来挪用这些听从。

2. 宏界说是用一个标识符来表现一个字符串,这个字符串可以是常量、变量或表达式。在宏挪用中把用该字符串代换宏名。

3. 宏界说可以带有参数,宏挪用时因此实参代换形参。而不是“值传送”。

4. 为了截止宏代换时发作错误,宏界说中的字符串应加括号,字符串中出现的方式参数单方也应加括号。

5. 文件搜聚是预处理的一个次要听从,它可用来把多个源文件衔接成一个源文件截止编译,效果把天生一个目的文件。


6. 前提编译允许只编译源按次中对劲前提的按次段,使天生的目的按次较短,从而裁减了内存的开支并进步了按次的听从。

7. 哄骗预处理听从便于按次的改削、阅读、移植和调试,也便于完成模块化按次诡计。




版权声明: 原创作品,允许转载,转载时请务必以超链接方式标明文章 原始来因 、作者信息和本声明。否则将穷究法令责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1975569.html