013_内联函数

/*
    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;
}

猜你喜欢

转载自blog.csdn.net/WUZHU2017/article/details/81292650
今日推荐