一,內(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ù)聲明時inline關(guān)鍵字必須和函數(shù)定義結(jié)合在一起,否則編譯器會直接忽略內(nèi)聯(lián)請求。
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; // 宏定義方式的時候是在預(yù)編譯階段直接替換,++a<b?++a:b,因此此時返回的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; }
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26