第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在C99中,沒(méi)有“靜態(tài)”或“外部”的“內(nèi)聯(lián)”有用嗎?

在C99中,沒(méi)有“靜態(tài)”或“外部”的“內(nèi)聯(lián)”有用嗎?

C
瀟瀟雨雨 2019-06-28 17:20:14
在C99中,沒(méi)有“靜態(tài)”或“外部”的“內(nèi)聯(lián)”有用嗎?當(dāng)我試圖構(gòu)建這個(gè)代碼inline void f() {}int main(){     f();}使用命令行g(shù)cc -std=c99 -o a a.c我得到一個(gè)鏈接器錯(cuò)誤(未定義的引用f)。如果我使用static inline或extern inline而不是僅僅inline,或者如果我用-O(因此函數(shù)實(shí)際上是內(nèi)聯(lián)的)?!癈99標(biāo)準(zhǔn)”第6.7.4(6)段似乎界定了這種行為:如果翻譯單元中的函數(shù)的所有文件范圍聲明都包括inline無(wú)函數(shù)說(shuō)明符extern,則該翻譯單元中的定義是內(nèi)聯(lián)定義。內(nèi)聯(lián)定義不提供函數(shù)的外部定義,也不禁止在另一個(gè)翻譯單元中進(jìn)行外部定義。內(nèi)聯(lián)定義提供了外部定義的替代方案,譯者可以使用該定義來(lái)實(shí)現(xiàn)對(duì)同一翻譯單元中的函數(shù)的任何調(diào)用。未指定對(duì)函數(shù)的調(diào)用是使用內(nèi)聯(lián)定義還是使用外部定義。如果我正確地理解了所有這些,那么定義了一個(gè)具有函數(shù)的編譯單元。inline正如上面的示例所示,只有當(dāng)有一個(gè)具有相同名稱的外部函數(shù)時(shí),才會(huì)進(jìn)行一致的編譯,而且我永遠(yuǎn)也不知道是調(diào)用了我自己的函數(shù)還是調(diào)用了外部函數(shù)。這種行為不是完全愚蠢嗎?定義函數(shù)有用嗎?inline無(wú)static或extern在C99?我是不是遺漏了什么?答案摘要當(dāng)然,我漏掉了什么,而且我的行為也不愚蠢。*)如尼莫解釋,想法是把定義職能inline void f() {}在頭文件中,并且只有聲明extern inline void f();在相應(yīng)的.c文件中。只有extern聲明觸發(fā)外部可見(jiàn)二進(jìn)制代碼的生成。確實(shí)沒(méi)有用inline在.C文件中-它只在頭文件中有用。就像喬納森答覆中引述的C99委員會(huì)的理?yè)?jù)說(shuō)明,inline都是關(guān)于編譯器優(yōu)化,這些優(yōu)化要求函數(shù)的定義在調(diào)用的站點(diǎn)上可見(jiàn)。這只能通過(guò)將定義放在標(biāo)頭中才能實(shí)現(xiàn),當(dāng)然,頭中的定義不能在編譯器每次看到它時(shí)發(fā)出代碼。但是,由于編譯器并不強(qiáng)制實(shí)際內(nèi)聯(lián)一個(gè)函數(shù),所以外部定義必須存在于某個(gè)地方。
查看完整描述

3 回答

?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

內(nèi)聯(lián)定義提供了替代外部定義,哪一位翻譯可以,可能用于實(shí)現(xiàn)對(duì)同一翻譯單元中的函數(shù)的任何調(diào)用。

所以,如果你知道函數(shù)的行為f如果你想在一個(gè)緊密的循環(huán)中調(diào)用它,你可以復(fù)制-粘貼它的定義到一個(gè)模塊中,以防止函數(shù)調(diào)用;,您可以提供一個(gè)定義,就當(dāng)前模塊而言,它是等效的(但跳過(guò)輸入驗(yàn)證或任何您可以想象的優(yōu)化)。然而,編譯器編寫(xiě)者可以選擇對(duì)程序大小進(jìn)行優(yōu)化。


查看完整回答
反對(duì) 回復(fù) 2019-06-28
  • 3 回答
  • 0 關(guān)注
  • 401 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)