inline用法
1 根据实参如何替换inline
inline int min(int i,int j)
{
return i>j?j:i;
}
int i,j;
int mvalue = min(i,j) 替换之后 mvalue = i>j?j:i;
int mvalue= min(3,5) 替换之后 mvalue = 3;计算表达式再替换
int mvalue=min(foo(),bar()+1)
替换之后 int t1,int t2 ;//防止多次调用函数foo(),bar()
mvalue= (t1=foo()),(t2=bar()+1,t1>t2?t2:t1;
2 当inline中含有局部变量时候
inline int min(int i,int j)
{
int minValue=i>j?j:i;
return minValue;
}
{
int minValue
minValue = min(v1,v2);
}
inline替换之后
{
int minValue
int _min_lv_minval;
minValue = (_min_lv_minval=v1>v2?v2:v1),_min_lv_minval;
}
在某单一表达式中inline函数调用多次,局部变量也会被重命名多次,生成多个局部变量。
minValue=min(v1,v2)+min(f00(),foo()+1);
会生成四个临时局部变量
int _min_lv_minval_00;
int _min_lv_minval_01;
int t1;
int t2;