强奸久久久久久久|草草浮力在线影院|手机成人无码av|亚洲精品狼友视频|国产国模精品一区|久久成人中文字幕|超碰在线视屏免费|玖玖欧洲一区二区|欧美精品无码一区|日韩无遮一区二区

首頁 > 產(chǎn)品 > 問答 > 內(nèi)聯(lián)函數(shù),內(nèi)聯(lián)函數(shù)的定義

內(nèi)聯(lián)函數(shù),內(nèi)聯(lián)函數(shù)的定義

來源:整理 時間:2023-08-26 15:29:17 編輯:智能門戶 手機(jī)版

本文目錄一覽

1,內(nèi)聯(lián)函數(shù)的定義

內(nèi)聯(lián)函數(shù)從源代碼層看,有函數(shù)的結(jié)構(gòu),而在編譯后,卻不具備函數(shù)的性質(zhì)。內(nèi)聯(lián)函數(shù)不是在調(diào)用時發(fā)生控制轉(zhuǎn)移,而是在編譯時將函數(shù)體嵌入在每一個調(diào)用處。編譯時,類似宏替換,使用函數(shù)體替換調(diào)用處的函數(shù)名。一般在代碼中用inline修飾,但是能否形成內(nèi)聯(lián)函數(shù),需要看編譯器對該函數(shù)定義的具體處理。

內(nèi)聯(lián)函數(shù)的定義

2,什么是內(nèi)聯(lián)函數(shù)啊和普通的成員函數(shù)有什么區(qū)別嗎

1.內(nèi)聯(lián)函數(shù)可減少cpu的系統(tǒng)開銷,并且程序的整體速度將加快,但當(dāng)內(nèi)聯(lián)函數(shù)很大時,會有相反的作用,因此一般比較小的函數(shù)才使用內(nèi)聯(lián)函數(shù).2.有兩種內(nèi)聯(lián)函數(shù)的聲明方法,一種是在函數(shù)前使用inline關(guān)見字,另一種是在類的內(nèi)部定義函數(shù)的代碼,這樣的函數(shù)將自動轉(zhuǎn)換為內(nèi)聯(lián)函數(shù),而且沒必要將inline放在函數(shù)前面.3.內(nèi)聯(lián)是一種對編譯器的請求,下面這些情況會阻止編譯器服從這項請求.如果函數(shù)中包含有循環(huán),switch或goto語句,遞歸函數(shù),含有static的函數(shù).由此可以看出,內(nèi)聯(lián)函數(shù)和成員函數(shù)沒什么區(qū)別,區(qū)別就在于怎樣加快函數(shù)的執(zhí)行速度而已。

什么是內(nèi)聯(lián)函數(shù)啊和普通的成員函數(shù)有什么區(qū)別嗎

3,什么是內(nèi)聯(lián)函數(shù)為什么要引入內(nèi)聯(lián)函數(shù)使用內(nèi)聯(lián)函數(shù)應(yīng)該注

內(nèi)聯(lián)函數(shù) 在類聲明的內(nèi)部聲明或定義的成員函數(shù)叫做內(nèi)聯(lián)(INLINE)函數(shù). 有兩種實現(xiàn)方式: 1.在類聲明的內(nèi)部聲明,而在類聲明外部定義叫做顯式內(nèi)聯(lián)函數(shù),如: class display int t; public: void output(void) } display object; inline void display::output(void) cout << "i is " << i <<"\n"; } 2.在類聲明的內(nèi)部定義,叫做隱式內(nèi)聯(lián)函數(shù),如: class display int t; public: inline void output(void) } 引入內(nèi)聯(lián)函數(shù)的目的是為了解決程序中函數(shù)調(diào)用的效率問題。 函數(shù)是一種更高級的抽象。它的引入使得編程者只關(guān)心函數(shù)的功能和使用方法,而不必關(guān)心函數(shù)功能的具體實現(xiàn);函數(shù)的引入可以減少程序的目標(biāo)代碼,實現(xiàn)程序代碼和數(shù)據(jù)的共享。但是,函數(shù)調(diào)用也會帶來降低效率的問題,因為調(diào)用函數(shù)實際上將程序執(zhí)行順序轉(zhuǎn)移到函數(shù)所存放在內(nèi)存中某個地址,將函數(shù)的程序內(nèi)容執(zhí)行完后,再返回到轉(zhuǎn)去執(zhí)行該函數(shù)前的地方。這種轉(zhuǎn)移操作要求在轉(zhuǎn)去前要保護(hù)現(xiàn)場并記憶執(zhí)行的地址,轉(zhuǎn)回后先要恢復(fù)現(xiàn)場,并按原來保存地址繼續(xù)執(zhí)行。因此,函數(shù)調(diào)用要有一定的時間和空間方面的開銷,于是將影響其效率。特別是對于一些函數(shù)體代碼不是很大,但又頻繁地被調(diào)用的函數(shù)來講,解決其效率問題更為重要。引入內(nèi)聯(lián)函數(shù)實際上就是為了解決這一問題。 在程序編譯時,編譯器將程序中出現(xiàn)的內(nèi)聯(lián)函數(shù)的調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)的函數(shù)體來進(jìn)行替換。顯然,這種做法不會產(chǎn)生轉(zhuǎn)去轉(zhuǎn)回的問題,但是由于在編譯時將函數(shù)體中的代碼被替代到程序中,因此會增加目標(biāo)程序代碼量,進(jìn)而增加空間開銷,而在時間代銷上不象函數(shù)調(diào)用時那么大,可見它是以目標(biāo)代碼的增加為代價來換取時間的節(jié)省。 在程序中,調(diào)用其函數(shù)時,該函數(shù)在編譯時被替代,而不是像一般函數(shù)那樣是在運行時被調(diào)用。 使用內(nèi)聯(lián)函數(shù)應(yīng)注意的事項 內(nèi)聯(lián)函數(shù)具有一般函數(shù)的特性,它與一般函數(shù)所不同之處只在于函數(shù)調(diào)用的處理。一般函數(shù)進(jìn)行調(diào)用時,要將程序執(zhí)行權(quán)轉(zhuǎn)到被調(diào)用函數(shù)中,然后再返回到調(diào)用它的函數(shù)中;而內(nèi)聯(lián)函數(shù)在調(diào)用時,是將調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)體來替換。在使用內(nèi)聯(lián)函數(shù)時,應(yīng)注意如下幾點: 1.在內(nèi)聯(lián)函數(shù)內(nèi)不允許用循環(huán)語句和開關(guān)語句。 如果內(nèi)聯(lián)函數(shù)有這些語句,則編譯將該函數(shù)視同普通函數(shù)那樣產(chǎn)生函數(shù)調(diào)用代碼,遞歸函數(shù)(自己調(diào)用自己的函數(shù))是不能被用來做內(nèi)聯(lián)函數(shù)的。內(nèi)聯(lián)函數(shù)只適合于只有1~5行的小函數(shù)。對一個含有許多語句的大函數(shù),函數(shù)調(diào)用和返回的開銷相對來說微不足道,所以也沒有必要用內(nèi)聯(lián)函數(shù)實現(xiàn)。 2.內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前。 3.本欄目講到的類結(jié)構(gòu)中所有在類說明內(nèi)部定義的函數(shù)是內(nèi)聯(lián)函數(shù)。

什么是內(nèi)聯(lián)函數(shù)為什么要引入內(nèi)聯(lián)函數(shù)使用內(nèi)聯(lián)函數(shù)應(yīng)該注

4,C中內(nèi)聯(lián)函數(shù)是什么意思

在類聲明的內(nèi)部聲明或定義的成員函數(shù)叫做內(nèi)聯(lián)(INLINE)函數(shù).  有兩種實現(xiàn)方式:  1.在類聲明的內(nèi)部聲明,而在類聲明外部定義叫做顯式內(nèi)聯(lián)函數(shù),如:  class display    int t;  public:  void output(void)  }  display object;  inline void display::output(void)    cout << "i is " << i <<"\n";  }  2.在類聲明的內(nèi)部定義,叫做隱式內(nèi)聯(lián)函數(shù),如:  class display    int t;  public:  inline void output(void)    }   引入內(nèi)聯(lián)函數(shù)的目的是為了解決程序中函數(shù)調(diào)用的效率問題。   函數(shù)是一種更高級的抽象。它的引入使得編程者只關(guān)心函數(shù)的功能和使用方法,而不必關(guān)心函數(shù)功能的具體實現(xiàn);函數(shù)的引入可以減少程序的目標(biāo)代碼,實現(xiàn)程序代碼和數(shù)據(jù)的共享。但是,函數(shù)調(diào)用也會帶來降低效率的問題,因為調(diào)用函數(shù)實際上將程序執(zhí)行順序轉(zhuǎn)移到函數(shù)所存放在內(nèi)存中某個地址,將函數(shù)的程序內(nèi)容執(zhí)行完后,再返回到轉(zhuǎn)去執(zhí)行該函數(shù)前的地方。這種轉(zhuǎn)移操作要求在轉(zhuǎn)去前要保護(hù)現(xiàn)場并記憶執(zhí)行的地址,轉(zhuǎn)回后先要恢復(fù)現(xiàn)場,并按原來保存地址繼續(xù)執(zhí)行。因此,函數(shù)調(diào)用要有一定的時間和空間方面的開銷,于是將影響其效率。特別是對于一些函數(shù)體代碼不是很大,但又頻繁地被調(diào)用的函數(shù)來講,解決其效率問題更為重要。引入內(nèi)聯(lián)函數(shù)實際上就是為了解決這一問題。
內(nèi)聯(lián)函數(shù)具有一般函數(shù)的特性,它與一般函數(shù)所不同之處只在于函數(shù)調(diào)用的處理。一般函數(shù)進(jìn)行調(diào)用時,要將程序執(zhí)行權(quán)轉(zhuǎn)到被調(diào)用函數(shù)中,然后再返回到調(diào)用它的函數(shù)中;而內(nèi)聯(lián)函數(shù)在調(diào)用時,是將調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)體來替換。在使用內(nèi)聯(lián)函數(shù)時,應(yīng)注意如下幾點:   1.在內(nèi)聯(lián)函數(shù)內(nèi)不允許用循環(huán)語句和開關(guān)語句。   如果內(nèi)聯(lián)函數(shù)有這些語句,則編譯將該函數(shù)視同普通函數(shù)那樣產(chǎn)生函數(shù)調(diào)用代碼,遞歸函數(shù)(自己調(diào)用自己的函數(shù))是不能被用來做內(nèi)聯(lián)函數(shù)的。內(nèi)聯(lián)函數(shù)只適合于只有1~5行的小函數(shù)。對一個含有許多語句的大函數(shù),函數(shù)調(diào)用和返回的開銷相對來說微不足道,所以也沒有必要用內(nèi)聯(lián)函數(shù)實現(xiàn)?! ?.內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前。   3.本欄目講到的類結(jié)構(gòu)中所有在類說明內(nèi)部定義的函數(shù)是內(nèi)聯(lián)函數(shù)。
首先讓你考慮一個非常簡單的問題,我們在寫程序的時候為什么不可以把變量的聲明放到要使用該變量語句的前面就像: int a,b; cout << a + b << endl; 而不能寫寫成 cout << a + b << endl; int a,b; 目的就是在我們要用該變量時必須讓編譯器知道該變量的存在,而在現(xiàn)在程序中我們都知道,除非有特別說明,否則程序執(zhí)行就是按照順序執(zhí)行,所以,如果你把一個函數(shù)定義在后面,而在前面又沒有通知編譯器存在該函數(shù),那么在編譯時肯定會說沒有這個函數(shù),而當(dāng)你通知編譯器的時候又得保證你通知的消息的正確性,就是函數(shù)返回類型,函數(shù)名稱,參數(shù)類型及個數(shù),這些信息必須相當(dāng)準(zhǔn)確,否則編譯器不可能認(rèn)為是一樣的,不過但你有了函數(shù)原型當(dāng)沒有函數(shù)定義編譯可能不會出錯(返回類型為void). 希望你看看m.h.deitel著的<>! 祝你成功!

5,什么是內(nèi)聯(lián)函數(shù)啊

內(nèi)聯(lián)函數(shù)在調(diào)用時不是像一般的函數(shù)那樣要轉(zhuǎn)去執(zhí)行被調(diào)用函數(shù)的函數(shù)體,執(zhí)行完成后再轉(zhuǎn)回調(diào)用函數(shù)中,執(zhí)行其后語句, 而是在調(diào)用函數(shù)處用內(nèi)聯(lián)函數(shù)體的代碼來替換(這是半句是精髓),這樣將會節(jié)省調(diào)用開銷,提高運行速度。
在類聲明的內(nèi)部聲明或定義的成員函數(shù)叫做內(nèi)聯(lián)(INLINE)函數(shù).   有兩種實現(xiàn)方式:   1.在類聲明的內(nèi)部聲明,而在類聲明外部定義叫做顯式內(nèi)聯(lián)函數(shù),如:   class display   {   int t;   public:   void output(void)   }   display object;   inline void display::output(void)   {   cout << "i is " << i <<"\n";   }   2.在類聲明的內(nèi)部定義,叫做隱式內(nèi)聯(lián)函數(shù),如:   class display   {   int t;   public:   inline void output(void)   {cout<<"i is "<< i << "\n";}   }    引入內(nèi)聯(lián)函數(shù)的目的是為了解決程序中函數(shù)調(diào)用的效率問題。   函數(shù)是一種更高級的抽象。它的引入使得編程者只關(guān)心函數(shù)的功能和使用方法,而不必關(guān)心函數(shù)功能的具體實現(xiàn);函數(shù)的引入可以減少程序的目標(biāo)代碼,實現(xiàn)程序代碼和數(shù)據(jù)的共享。但是,函數(shù)調(diào)用也會帶來降低效率的問題,因為調(diào)用函數(shù)實際上將程序執(zhí)行順序轉(zhuǎn)移到函數(shù)所存放在內(nèi)存中某個地址,將函數(shù)的程序內(nèi)容執(zhí)行完后,再返回到轉(zhuǎn)去執(zhí)行該函數(shù)前的地方。這種轉(zhuǎn)移操作要求在轉(zhuǎn)去前要保護(hù)現(xiàn)場并記憶執(zhí)行的地址,轉(zhuǎn)回后先要恢復(fù)現(xiàn)場,并按原來保存地址繼續(xù)執(zhí)行。因此,函數(shù)調(diào)用要有一定的時間和空間方面的開銷,于是將影響其效率。特別是對于一些函數(shù)體代碼不是很大,但又頻繁地被調(diào)用的函數(shù)來講,解決其效率問題更為重要。引入內(nèi)聯(lián)函數(shù)實際上就是為了解決這一問題。   在程序編譯時,編譯器將程序中出現(xiàn)的內(nèi)聯(lián)函數(shù)的調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)的函數(shù)體來進(jìn)行替換。顯然,這種做法不會產(chǎn)生轉(zhuǎn)去轉(zhuǎn)回的問題,但是由于在編譯時函數(shù)體中的代碼被替代到程序中,因此會增加目標(biāo)程序代碼量,進(jìn)而增加空間開銷,而在時間開銷上不象函數(shù)調(diào)用時那么大,可見它是以目標(biāo)代碼的增加為代價來換取時間的節(jié)省。   在程序中,調(diào)用其函數(shù)時,該函數(shù)在編譯時被替代,而不是像一般函數(shù)那樣是在運行時被調(diào)用。   使用內(nèi)聯(lián)函數(shù)應(yīng)注意的事項   內(nèi)聯(lián)函數(shù)具有一般函數(shù)的特性,它與一般函數(shù)所不同之處只在于函數(shù)調(diào)用的處理。一般函數(shù)進(jìn)行調(diào)用時,要將程序執(zhí)行權(quán)轉(zhuǎn)到被調(diào)用函數(shù)中,然后再返回到調(diào)用它的函數(shù)中;而內(nèi)聯(lián)函數(shù)在調(diào)用時,是將調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)體來替換。在使用內(nèi)聯(lián)函數(shù)時,應(yīng)注意如下幾點:   1.在內(nèi)聯(lián)函數(shù)內(nèi)不允許用循環(huán)語句和開關(guān)語句。   如果內(nèi)聯(lián)函數(shù)有這些語句,則編譯將該函數(shù)視同普通函數(shù)那樣產(chǎn)生函數(shù)調(diào)用代碼,遞歸函數(shù)(自己調(diào)用自己的函數(shù))是不能被用來做內(nèi)聯(lián)函數(shù)的。內(nèi)聯(lián)函數(shù)只適合于只有1~5行的小函數(shù)。對一個含有許多語句的大函數(shù),函數(shù)調(diào)用和返回的開銷相對來說微不足道,所以也沒有必要用內(nèi)聯(lián)函數(shù)實現(xiàn)。   2.內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前。   3.本欄目講到的類結(jié)構(gòu)中所有在類說明內(nèi)部定義的函數(shù)是內(nèi)聯(lián)函數(shù)。
首先,函數(shù)調(diào)用時需要建立??臻g來保存調(diào)用時的現(xiàn)場狀態(tài)和返回地址,并且進(jìn)行參數(shù)傳遞,產(chǎn)生程序轉(zhuǎn)移。系統(tǒng)做這些工作都需要時間和空間方面的開銷。因此,c++提供內(nèi)聯(lián)函數(shù)機(jī)制,定義一些功能比較簡單、代碼比較短的函數(shù)(注意:這是內(nèi)聯(lián)函數(shù)一般特點)。編譯時,系統(tǒng)會把內(nèi)聯(lián)函數(shù)的函數(shù)體嵌入到每一個函數(shù)調(diào)用處,而不是產(chǎn)生程序轉(zhuǎn)移,從而節(jié)省了程序運行時的調(diào)用開銷。 定義內(nèi)聯(lián)函數(shù)的方法時在函數(shù)名第一次出現(xiàn)時(注意是第一次出現(xiàn)),在函數(shù)名之前加上關(guān)鍵字inline。
http://baike.baidu.com/view/534064.htm?fr=ala0_1 詳細(xì)的說明什么是內(nèi)聯(lián)函數(shù)。

6,什么是內(nèi)聯(lián)函數(shù)

一、內(nèi)聯(lián)函數(shù)的意義內(nèi)聯(lián)函數(shù)是指用inline關(guān)鍵字修飾的函數(shù)。在類內(nèi)定義的函數(shù)被默認(rèn)成內(nèi)聯(lián)函數(shù)。內(nèi)聯(lián)函數(shù)從源代碼層看,有函數(shù)的結(jié)構(gòu),而在編譯后,卻不具備函數(shù)的性質(zhì)。內(nèi)聯(lián)函數(shù)不是在調(diào)用時發(fā)生控制轉(zhuǎn)移,而是在編譯時將函數(shù)體嵌入在每一個調(diào)用處。編譯時,類似宏替換,使用函數(shù)體替換調(diào)用處的函數(shù)名。一般在代碼中用inline修飾,但是能否形成內(nèi)聯(lián)函數(shù),需要看編譯器對該函數(shù)定義的具體處理。二、內(nèi)聯(lián)函數(shù)的主要作用內(nèi)聯(lián)函數(shù)是一種編譯機(jī)制,優(yōu)點從代碼上是看不出來的,但是程序的執(zhí)行效率上有差別,通常,編譯器對函數(shù)調(diào)用的處理是一種類似中斷的方式。即當(dāng)執(zhí)行到函數(shù)調(diào)用語句時,程序把當(dāng)前所有的狀態(tài)信息比如CPU所有寄存器(其中一個很重要的就是指令指針寄存器)的值保存起來。然后放心大膽地轉(zhuǎn)去執(zhí)行那個函數(shù)的代碼,執(zhí)行完后再返回原來的地方,恢復(fù)原先保存過的狀態(tài)信息,于是也就可以接著原來被中斷的指令繼續(xù)往下執(zhí)行。擴(kuò)展資料:一、函數(shù)的意義:1.函數(shù)(function)是一個集合元素到令一個集合元素的對應(yīng)關(guān)系,它起著一種映射和變換的功能。2.如在數(shù)學(xué)中,一個集合A, 若對A中的每個元素x,按對應(yīng)法則f,使B中存在唯一的一個元素A與之對應(yīng) , 就稱對應(yīng)法則f是X上的一個函數(shù),記作B=f(x)。廣義地說。3.函數(shù)其實是完成某一功能的工具,如在數(shù)學(xué)中,該功能就是用來實現(xiàn)數(shù)學(xué)運算的,就是數(shù)學(xué)函數(shù),故一般函數(shù)是完成某一工程中基礎(chǔ)工具,起著基礎(chǔ)功能。4.故一般函數(shù)就是一個功能區(qū)能完成基本功能的工具。二、C/C++之宏、內(nèi)聯(lián)函數(shù)和普通函數(shù)的區(qū)別1.內(nèi)聯(lián)函數(shù)的執(zhí)行過程與帶參數(shù)宏定義很相似,但參數(shù)的處理不同。2.帶參數(shù)的宏定義并不對參數(shù)進(jìn)行運算,而是直接替換;3.內(nèi)聯(lián)函數(shù)首先是函數(shù),這就意味著函數(shù)的很多性質(zhì)都適用于內(nèi)聯(lián)函數(shù),即內(nèi)聯(lián)函數(shù)先把參數(shù)表達(dá)式進(jìn)行運算求值,然后把表達(dá)式的值傳遞給形式參數(shù)。4.內(nèi)聯(lián)函數(shù)與帶參數(shù)宏定義的另一個區(qū)別是,內(nèi)聯(lián)函數(shù)的參數(shù)類型和返回值類型在聲明中都有明確的指定;5.而帶參數(shù)宏定義的參數(shù)沒有類型的概念,只有在宏展開以后,才由編譯器檢查語法,這就存在很多的安全隱患。
樓主有意思,我覺得樓上的答案已經(jīng)夠“官方”的了么...內(nèi)聯(lián)函數(shù)就是小型函數(shù),犧牲空間來節(jié)省函數(shù)調(diào)用的開銷,一般用作比較小的函數(shù),即函數(shù)內(nèi)部沒有循環(huán)、開關(guān)語句等。內(nèi)聯(lián)函數(shù)被發(fā)明出來就是為了取代C中的宏,因為宏是單純的替換而沒有類型檢查所以經(jīng)常出毛病,比如:#define MAX(a, b) (a) > (b) ? (a) : (b)如果你在代碼中這樣寫:int a = 5, b = 10;// int max = MAX(++a, b); // a自增了兩次// int max = MAX(++a, b+10); // a自增了一次a的自增次數(shù)竟然由與其比較的數(shù)字的大小來決定!?這肯定不是你想要的結(jié)果。所以最好的辦法是這樣:template <class T>inline T max(const T& t1, const T& t2)return t1 > t2 ? t1 : t2;}這樣的話如果你這樣寫:int max = max(a, b);其實就被替換為了:int max = a > b ? a : b;雖然看起來宏差不多,但是比宏多了類型檢查,而且內(nèi)聯(lián)函數(shù)使用的是真正的函數(shù)的特性,而不是宏的function-like,模擬函數(shù)的功用。內(nèi)聯(lián)函數(shù)是為頻繁使用、并且過程不大的小型函數(shù)設(shè)計的,我說了它是以犧牲代碼空間來節(jié)省函數(shù)調(diào)用的開銷,內(nèi)聯(lián)函數(shù)使用不當(dāng)就會造成代碼膨脹,所以使用它一定要小心。建議(書上抄的):For function-like macros, prefer inline functions to #defines.樓主有時間還是多看看書好,這里畢竟專家不多,而且也沒多少人有太多的時間和精力來幫你解決這些基礎(chǔ)性的問題,好好地讀幾本書吧,一定會讓你獲益匪淺的...
在計算機(jī)科學(xué)中,內(nèi)聯(lián)函數(shù)(有時稱作在線函數(shù)或編譯時期展開函數(shù))是一種編程語言結(jié)構(gòu),用來建議編譯器對一些特殊函數(shù)進(jìn)行內(nèi)聯(lián)擴(kuò)展(有時稱作在線擴(kuò)展);也就是說建議編譯器將指定的函數(shù)體插入并取代每一處調(diào)用該函數(shù)的地方(上下文),從而節(jié)省了每次調(diào)用函數(shù)帶來的額外時間開支。但在選擇使用內(nèi)聯(lián)函數(shù)時,必須在程序占用空間和程序執(zhí)行效率之間進(jìn)行權(quán)衡,因為過多的比較復(fù)雜的函數(shù)進(jìn)行內(nèi)聯(lián)擴(kuò)展將帶來很大的存儲資源開支。另外還需要特別注意的是對遞歸函數(shù)的內(nèi)聯(lián)擴(kuò)展可能引起部分編譯器的無窮編譯。擴(kuò)展資料:內(nèi)聯(lián)擴(kuò)展是一種特別的用于消除調(diào)用函數(shù)時所造成的固有的時間消耗方法。一般用于能夠快速執(zhí)行的函數(shù),因為在這種情況下函數(shù)調(diào)用的時間消耗顯得更為突出。這種方法對于很小的函數(shù)也有空間上的益處,并且它也使得一些其他的優(yōu)化成為可能。沒有了內(nèi)聯(lián)函式,程式員難以控制哪些函數(shù)內(nèi)聯(lián)哪些不內(nèi)聯(lián);由編譯器自行決定是否內(nèi)聯(lián)。加上這種控制維度準(zhǔn)許特定于應(yīng)用的知識,諸如執(zhí)行函式的頻繁程度,被利用于選擇哪些函數(shù)要內(nèi)聯(lián)。參考資料:搜狗百科-內(nèi)聯(lián)函數(shù)
內(nèi)聯(lián)函數(shù)(有時稱作在線函數(shù)或編譯時期展開函數(shù))是一種編程語言結(jié)構(gòu),用來建議編譯器對一些特殊函數(shù)進(jìn)行內(nèi)聯(lián)擴(kuò)展(有時稱作在線擴(kuò)展)。也就是說建議編譯器將指定的函數(shù)體插入并取代每一處調(diào)用該函數(shù)的地方(上下文),從而節(jié)省了每次調(diào)用函數(shù)帶來的額外時間開支。但在選擇使用內(nèi)聯(lián)函數(shù)時,必須在程序占用空間和程序執(zhí)行效率之間進(jìn)行權(quán)衡,因為過多的比較復(fù)雜的函數(shù)進(jìn)行內(nèi)聯(lián)擴(kuò)展將帶來很大的存儲資源開支。另外還需要特別注意的是對遞歸函數(shù)的內(nèi)聯(lián)擴(kuò)展可能引起部分編譯器的無窮編譯。擴(kuò)展資料內(nèi)聯(lián)擴(kuò)展是一種特別的用于消除調(diào)用函數(shù)時所造成的固有的時間消耗方法。一般用于能夠快速執(zhí)行的函數(shù),因為在這種情況下函數(shù)調(diào)用的時間消耗顯得更為突出。這種方法對于很小的函數(shù)也有空間上的益處,并且它也使得一些其他的優(yōu)化成為可能。沒有了內(nèi)聯(lián)函式,程式員難以控制哪些函數(shù)內(nèi)聯(lián)哪些不內(nèi)聯(lián);由編譯器自行決定是否內(nèi)聯(lián)。加上這種控制維度準(zhǔn)許特定于應(yīng)用的知識,諸如執(zhí)行函式的頻繁程度,被利用于選擇哪些函數(shù)要內(nèi)聯(lián)。此外,在一些語言中,內(nèi)聯(lián)函數(shù)與編譯模型聯(lián)系緊密:如在C++中,有必要在每個使用它的模塊中定義一個內(nèi)聯(lián)函數(shù);與之相對應(yīng)的,普通函數(shù)必須定義在單個模塊中。這使得模塊編譯獨立于其他的模塊。參考資料:搜狗百科——內(nèi)聯(lián)函數(shù)
在計算機(jī)科學(xué)中,內(nèi)聯(lián)函數(shù)(有時稱作在線函數(shù)或編譯時期展開函數(shù))是一種編程語言結(jié)構(gòu),用來建議編譯器對一些特殊函數(shù)進(jìn)行內(nèi)聯(lián)擴(kuò)展(有時稱作在線擴(kuò)展)。內(nèi)聯(lián)擴(kuò)展是一種特別的用于消除調(diào)用函數(shù)時所造成的固有的時間消耗方法。一般用于能夠快速執(zhí)行的函數(shù),因為在這種情況下函數(shù)調(diào)用的時間消耗顯得更為突出。這種方法對于很小的函數(shù)也有空間上的益處,并且它也使得一些其他的優(yōu)化成為可能。沒有了內(nèi)聯(lián)函式,程式員難以控制哪些函數(shù)內(nèi)聯(lián)哪些不內(nèi)聯(lián);由編譯器自行決定是否內(nèi)聯(lián)。加上這種控制維度準(zhǔn)許特定于應(yīng)用的知識,諸如執(zhí)行函式的頻繁程度,被利用于選擇哪些函數(shù)要內(nèi)聯(lián)。此外,在一些語言中,內(nèi)聯(lián)函數(shù)與編譯模型聯(lián)系緊密:如在C++中,有必要在每個使用它的模塊中定義一個內(nèi)聯(lián)函數(shù);與之相對應(yīng)的,普通函數(shù)必須定義在單個模塊中。這使得模塊編譯獨立于其他的模塊。 擴(kuò)展資料:在C++中我們通常定義以下函數(shù)來求兩個整數(shù)的最大值:代碼如下:int max(int a, int b)return a > b ? a : b;}為這么一個小的操作定義一個函數(shù)的好處有:① 閱讀和理解函數(shù) max 的調(diào)用,要比讀一條等價的條件表達(dá)式并解釋它的含義要容易得多② 如果需要做任何修改,修改函數(shù)要比找出并修改每一處等價表達(dá)式容易得多③ 使用函數(shù)可以確保統(tǒng)一的行為,每個測試都保證以相同的方式實現(xiàn)④ 函數(shù)可以重用,不必為其他應(yīng)用程序重寫代碼雖然有這么多好處,但是寫成函數(shù)有一個潛在的缺點:調(diào)用函數(shù)比求解等價表達(dá)式要慢得多。在大多數(shù)的機(jī)器上,調(diào)用函數(shù)都要做很多工作:調(diào)用前要先保存寄存器,并在返回時恢復(fù),復(fù)制實參,程序還必須轉(zhuǎn)向一個新位置執(zhí)行C++中支持內(nèi)聯(lián)函數(shù),其目的是為了提高函數(shù)的執(zhí)行效率,用關(guān)鍵字 inline 放在函數(shù)定義(注意是定義而非聲明,下文繼續(xù)講到)的前面即可將函數(shù)指定為內(nèi)聯(lián)函數(shù),內(nèi)聯(lián)函數(shù)通常就是將它在程序中的每個調(diào)用點上“內(nèi)聯(lián)地”展開。內(nèi)聯(lián)函數(shù)應(yīng)該在頭文件中定義,這一點不同于其他函數(shù)。編譯器在調(diào)用點內(nèi)聯(lián)展開函數(shù)的代碼時,必須能夠找到 inline 函數(shù)的定義才能將調(diào)用函數(shù)替換為函數(shù)代碼,而對于在頭文件中僅有函數(shù)聲明是不夠的。當(dāng)然內(nèi)聯(lián)函數(shù)定義也可以放在源文件中,但此時只有定義的那個源文件可以用它,而且必須為每個源文件拷貝一份定義(即每個源文件里的定義必須是完全相同的),當(dāng)然即使是放在頭文件中,也是對每個定義做一份拷貝,只不過是編譯器替你完成這種拷貝罷了。但相比于放在源文件中,放在頭文件中既能夠確保調(diào)用函數(shù)是定義是相同的,又能夠保證在調(diào)用點能夠找到函數(shù)定義從而完成內(nèi)聯(lián)(替換)。參考資料:搜狗百科——內(nèi)聯(lián)函數(shù)
文章TAG:內(nèi)聯(lián)函數(shù)函數(shù)數(shù)的定義內(nèi)聯(lián)函數(shù)

最近更新

  • ps4銷量,ps4銷量破千萬的游戲有哪些ps4銷量,ps4銷量破千萬的游戲有哪些

    ps4銷量破千萬的游戲有哪些2,臥龍蒼天隕落銷量3,swhich好玩還是ps44,ps4銷售量排行榜ps4獨占大作排名1,ps4銷量破千萬的游戲有哪些《GTA5》、《使命召喚12:黑色行動3》。根據(jù)查詢ps4銷量相.....

    問答 日期:2023-08-26

  • 華為閃存門,華為P10閃存門怎么回事 華為官方回應(yīng)測評軟件遭下架華為閃存門,華為P10閃存門怎么回事 華為官方回應(yīng)測評軟件遭下架

    華為P10閃存門怎么回事華為官方回應(yīng)測評軟件遭下架2,HUAWEI閃存門是什么3,華為手機(jī)P10內(nèi)存門是怎么回事4,華為閃存門到底什么情況5,華為閃存門做出什么回應(yīng)6,華為閃存門解決了嗎1,華為P10閃.....

    問答 日期:2023-08-26

  • 沒有硬盤能開機(jī)嗎,電腦不要硬盤能啟動嗎沒有硬盤能開機(jī)嗎,電腦不要硬盤能啟動嗎

    電腦不要硬盤能啟動嗎2,沒硬盤電腦能開機(jī)嗎3,電腦沒有硬盤能開機(jī)嗎4,電腦不接硬盤能開機(jī)嗎5,電腦沒有硬盤可以啟動嗎6,電腦沒裝硬盤能開機(jī)嗎顯示器能亮嗎1,電腦不要硬盤能啟動嗎能不能2,沒硬.....

    問答 日期:2023-08-26

  • 接口是什么意思,接口是什么意思接口是什么意思,接口是什么意思

    接口是什么意思2,接口的定義3,接口是什么意思4,誰能給我說一下接口的定義謝謝了1,接口是什么意思接口就是用來連接別的東西的接口,可以插上拔下來的就是連接口什么接口啊,有好多種接口2,接口.....

    問答 日期:2023-08-26

  • 穿越功率,110KV降壓變電站低壓10KV側(cè)和35KV側(cè)有沒有穿越功率穿越功率,110KV降壓變電站低壓10KV側(cè)和35KV側(cè)有沒有穿越功率

    110KV降壓變電站低壓10KV側(cè)和35KV側(cè)有沒有穿越功率2,什么是穿越功率怎么樣計算3,變電站設(shè)計穿越功率4,穿越功率是什么意思5,電力系統(tǒng)中穿越性功率是什么意思6,穿越功率的介紹1,110KV降壓變電.....

    問答 日期:2023-08-26

  • 云桌面廠商排行榜,云桌面廠家排名云桌面廠商排行榜,云桌面廠家排名

    云桌面廠家排名2,國內(nèi)比較好的云桌面廠商排名3,云桌面系統(tǒng)誰家的更好用都有哪些廠家求推薦4,中國云計算服務(wù)器虛擬化廠商哪家好5,國內(nèi)知名云桌面廠商有哪些對比一下6,國內(nèi)主流云桌面廠家有.....

    問答 日期:2023-08-26

  • 標(biāo)準(zhǔn)齒輪參數(shù)表,齒輪參數(shù)標(biāo)準(zhǔn)齒輪參數(shù)表,齒輪參數(shù)

    齒輪參數(shù)2,求個標(biāo)準(zhǔn)齒輪的詳細(xì)參數(shù)一個小齒輪和齒條齒條行程為20MM左3,26齒標(biāo)準(zhǔn)尺寸外徑尺寸模數(shù)4,齒輪的參數(shù)5,齒輪各參數(shù)定義6,有4個標(biāo)準(zhǔn)齒輪1m4mmz252m4mmz503m3mm1,齒輪參數(shù)主要參數(shù):齒數(shù).....

    問答 日期:2023-08-26

  • 類腦,促進(jìn)類腦芯片發(fā)展應(yīng)從哪些方面做出努力類腦,促進(jìn)類腦芯片發(fā)展應(yīng)從哪些方面做出努力

    促進(jìn)類腦芯片發(fā)展應(yīng)從哪些方面做出努力2,中科類腦是做什么的3,什么是類腦計算4,類腦計算的主要方法有5,兩棲類腦最高級的整合中樞所在部位是6,類腦計算主要方法7,你屬于哪一類腦型8,類腦智能.....

    問答 日期:2023-08-26

相關(guān)文章