清华谭浩强c语言杨课件教学ppt-第9章 预处理命令.pptVIP

  • 2
  • 0
  • 约1.91千字
  • 约 26页
  • 2021-12-03 发布于福建
  • 举报

清华谭浩强c语言杨课件教学ppt-第9章 预处理命令.ppt

说明: 对带参数的宏定义的置换展开是用“表达式”对等的置换“形参表”中的参数。上例中的“?”是不会被置换。 宏名与括号之间不得有空格,因为宏名与表达式之间的分隔符为空格。 如果用 #define S (r) PI ? r ? r 的话,则被置换为 area=(r) PI ? r ? r (a) 宏展开并不进行值的传递,即不求表达式的值,也没有“返回值”的概念。 宏不存在类型问题,宏名无类型,参数也无类型,表达式可以是任何类型。 定义带参数的宏,可以实现一些简单的函数功能。 如: #define MAX(x,y) (x)(y)?(x) : (y) ? main( ) {int a, b, c, t ; ? t = MAX(a+b, c+d); ? } 注:这里的 t 展开后为 t = (a+b)(c+d)?(a+b):(c+d) 如果第一行写成: #define MAX(x,y) xy ? x : y结果不同! 因为置换展开是用 “表达式” 对等 的置换 “形参表” 中的参数 [例] 返回多个值的宏定义。 #define PI 3.1415926 #define CIRCLE(R,L,S,V) L=2*PI*R;S=PI*R*R;V=4/3*PI*R*R*R main() { flo

文档评论(0)

1亿VIP精品文档

相关文档