传智扫地僧课程学习笔记。
inline int myfunc( int a, int b )
{
return a<b ? a:b;
}
内联函数的实现和声明必须在一起!!!
你可以简单的理解为,内联函数和宏替换类似,
也因此没有真正函数的压栈,出栈,
适合短小的函数,
内联是一种请求,编译器不一定就这么处理,
内联的限制:
不能有循环语句,
不能有过多的条件判断,
下面是内联和宏替换的一个对比小案例,
//带参数的宏
#define MYFUNC(a, b) ((a) < (b) ? (a) : (b))
inline int myfunc(int a, int b)
{
return a < b ? a : b;
}
int main1402()
{
int a = 1;
int b = 3;
//int c = myfunc(++a, b); // a=2 b=3 c=2
int c = MYFUNC(++a, b); //==>宏替换并展开 ((++a) < (b) ? (++a) : (b)) //a=3 b=3 c=3
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("c = %d\n", c);
system("pause");
return 0;
}
这种++a的形式,少用,
这个宏替换蛮经典,还有要特别注意宏替换的()数量,