编程杂谈
宏定义的实质再牛逼的宏定义也是机械的替换宏定义结束不需要;(分号)#definePI3.14终止宏定义生效范围#definePI3.14代码块..#undefPI不带参数的宏定义#include<stdio.h>#definePI3.14intmain(){intr=6;printf("%d半径圆的面积%.5f",r,PI*r*r);return0;}带参数的宏定义比较两数字大小#include<stdio.h>#defineMAX(x,y)((x)>(y))?(x):(y)//这些括号是为了保证判断正确intmain(){intx=6,y=10;printf("%d%d-max->%d",x,y,MAX(x,y));return0;}求平方(有BUG)宏定义只是机械性替换,所以不能代替函数#include<stdio.h>#defineSQUARE(x)x*xintmain(){intx=6;printf("%d-平方->%d\n",x,SQUARE(x));printf("%d+1-平方->%d\n",x,SQUARE(x+1));return0;}