一,內(nèi)聯(lián)函數(shù)

1.內(nèi)聯(lián)函數(shù)的概念

  C++中的const常量可以用來代替宏常數(shù)的定義,例如:用const int a = 10來替換# define a 10。那么C++中是否有什么解決方案來替代宏代碼片段呢?C++中推薦使用內(nèi)聯(lián)函數(shù)代替宏代碼片段,C++中使用inline關(guān)鍵字聲明內(nèi)聯(lián)函數(shù)。注意:內(nèi)聯(lián)函數(shù)聲明時(shí)inline關(guān)鍵字必須和函數(shù)定義結(jié)合在一起,否則編譯器會(huì)直接忽略內(nèi)聯(lián)請(qǐng)求。

2.內(nèi)聯(lián)函數(shù)示例

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開發(fā),動(dòng)畫培訓(xùn)

# include<iostream>using namespace std;/* 宏定義函數(shù)方式 */# define FUN1(a,b) ((a)<(b)?(a):(b))/* 內(nèi)聯(lián)定義函數(shù)方式 */inline int FUN2(int a,int b)
{    return a < b ? a : b;
}int main()
{    int a = 1;    int b = 3;    // 宏定義方式的時(shí)候是在預(yù)編譯階段直接替換,++a<b?++a:b,因此此時(shí)返回的c是3(執(zhí)行了兩次++)    // int c = FUN1(++a, b);    // 內(nèi)聯(lián)函數(shù)方式是在編譯階段將函數(shù)體直接插入到調(diào)用的地方,最終生成的代碼是沒有函數(shù)定義的
    int c = FUN2(++a, b);

    printf("a = %d\n", a);
    printf("b = %d\n", b);
    printf("c = %d\n", c);    return 0;
}

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開發(fā),動(dòng)畫培訓(xùn)

網(wǎng)友評(píng)論