一、define和inline的区别
define:定义预编译时处理的宏,只进行简单的字符替换,无类型检测,只做替换,不做计算。
Inline:内联函数对编译器提出建议,是否进行宏替换,编译器有权拒绝,即提出申请但不一定成功。
例如:
#include<stdio.h>
#define max(a,b)(a>b?a:b);
inline int fun (int a,int b)
{
return (a>b?a:b);
}
int main ()
{
int a,b;
a=3;
b=0;
max(++a,b);//(++a>b?++a,b),将所有a替换成++a
printf("%d\n",a);
a=3;b=5;
max(++a,b);
printf("%d\n",a);
a=3;b=0;
fun(++a,b);
printf("%d\n",a);//(++a>b?a,b),将第一个a替换,后面使用替换后的a进行计算
return 0;
}
输出为:5
4
4