一,內(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ù)示例
# 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; }