宏定义和函数的使用区别

#define 命令定义内容即为:宏定义。

宏定义只是在执行过程中对其进行替换操作,自己曾在计算机等级考试中遇到同样的问题。

类型于下面的实例:

代码
#define f(x) x*x

int main(void)
{
    int i;
    i=f(1+1)+f(2+2);
    printf("%d\n",i)
}

输出结果:11

重新定义:

代码
#define f(x) (x)*(x)

输出结果:20

两个定义输出的结果并不相同,就是说:#define 宏定义 和 函数 return(x*x) 是不一样的,上式具体执行过程:

在(1)中:

代码
i=1+1*1+1+2+2*2+2=11

在(2)中:

代码
i=((1+1)*(1+1))+((2+2)*(2*2))=20

所以,在宏定义中,一定要注意这个问题。