define宏代换
由于函数代换时容易产生错误,每次都要查看别人的博客,今天自己写写,以后找起来方便,也能更好的记忆。
(1)普通函数代换
#define max(a,b) a>b?a:b
要注意的是用前式代换后式时,是替换后式的所有东西,包括符合,所以不能多次一举的加上‘;’。
(2)简单宏定义使用中出现的问题
#define c a+b
void main(){
...
d=m*c*n;//因为宏代换只是简单的替代则d=m*a+b*n,而不是d=m*(a+b)*n
...
}
解决方法:要是得d=m*(a+b)*n 需定义:#define c (a+b)
(3)带参数的宏定义出现的问题
#define square(x) x*x
void main(){
...
a=square(i+j)//a=i+j*i+j,而不是a=(i+j)*(i+j)
...
}
要使得a=(i+j)*(i+j),需定义 #define square(x) (x*x)
总之, 宏代换是先代换再运算。
优点:(1)方面程序修改
(2)优化速度