二级C语言考试辅导教程第九章:预处理

http://tech.ddvip.com   2007年12月08日    社区交流 收藏本文

二级C语言考试辅导教程第九章:预处理。

  8. 对“输出格式”作宏定义,可以减少书写麻烦。例9.3 中就采用了这种方法。

以下是引用片段:
  #definePprintf
  #defineD"%d
"
  #defineF"%f
"
  main(){
  inta=5,c=8,e=11;
  floatb=3.8,d=9.7,f=21.08;
  P(DF,a,b);
  P(DF,c,d);
  P(DF,e,f);
  }

  带参宏定义

  C语言允许宏带有参数。在宏定义中的参数称为形式参数, 在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开, 而且要用实参去代换形参。

  带参宏定义的一般形式为: #define 宏名(形参表) 字符串 在字符串中含有各个形参。带参宏调用的一般形式为: 宏名(实参表);

  例如:

  #define M(y) y*y+3*y /*宏定义*/

  :

  k=M(5); /*宏调用*/

  : 在宏调用时,用实参5去代替形参y, 经预处理宏展开后的语句

  为: k=5*5+3*5

以下是引用片段:
  #defineMAX(a,b)(a>b)?a:b
  main(){
  intx,y,max;
  printf("inputtwonumbers:");
  scanf("%d%d",&x,&y);
  max=MAX(x,y);
  printf("max=%d
",max);
  }

  上例程序的第一行进行带参宏定义,用宏名MAX表示条件表达式(a>b)?a:b,形参a,b均出现在条件表达式中。程序第七行max=MAX(x,

  y)为宏调用,实参x,y,将代换形参a,b。宏展开后该语句为: max=(x>y)?x:y;用于计算x,y中的大数。对于带参的宏定义有以下问题需要说明:

  1. 带参宏定义中,宏名和形参表之间不能有空格出现。

来源:豆豆网转载    作者:天极网    责编:豆豆技术应用

正在加载评论...