/*
inline 内联函数
1、inline 必须和函数体的实现,写在一块
2、C++编译器直接将函数体 插入 在函数调用的地方
3、内联函数省去了普通函数调用时压栈,跳转和返回的开销
4、内联函数由 编译器处理,直接将编译后的函数体插入调用的地方
5、宏代码片段 由预处理器处理, 进行简单的文本替换,没有任何编译过程
*/
#if 1
inline void printA()
{
int a = 0;
cout << "a" << a << endl;
}
void test()
{
printA();
//直接插入在函数体的调用的地方
/*{
int a = 0;
cout << "a" << a << endl;
}*/
cout << "hello world" << endl;
}
#endif
//带参数的宏
#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;
}