欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

inline與lnk2001、lnk2019,雞肋?

系統(tǒng) 1776 0

inline函數(shù)居然出現(xiàn)了lnk2001、lnk2019,先貼代碼。

a.h
#pragma once
class A
{
public:

??? inline void foo();
??? void use_foo();
};

?
a.cpp
#include "A.h"

inline void A::foo()
{

}

void A::use_foo()
{
??? foo();//此行注釋掉會(huì)產(chǎn)生lnk2019錯(cuò)誤
}


main.cpp
#include "A.h"

int main()
{
??? A a;
??? a.foo();
??? return 0;

}

?

看似簡(jiǎn)單的程序,揭示出inline的使用限制:

1、在頭文件中,類成員函數(shù)聲明為inline時(shí)實(shí)現(xiàn)函數(shù)體,比如:
#pragma once
class A
{
public:

??? inline void foo(){};//實(shí)現(xiàn)了函數(shù)體即便是空的
??? void use_foo();

};

?

2、在頭文件和源文件中分開實(shí)現(xiàn),此類源文件中的“任意非inline函數(shù)續(xù)”需調(diào)用過此函數(shù),然后其他源文件中才可用,此時(shí)鏈接時(shí)不會(huì)出現(xiàn)lnk2001 lnk2019錯(cuò)誤。

如:上面的a.cpp


兩種方法:

第一種缺點(diǎn)是破壞封裝,生成的庫(kù)拿給別人用總不希望被看到函數(shù)體的實(shí)現(xiàn)吧

第二種封裝性好,別人只能看到聲明,缺點(diǎn)是容易產(chǎn)生lnk錯(cuò)誤。

其實(shí)編譯器盡量把頭文件中的帶實(shí)現(xiàn)的函數(shù)優(yōu)化為inline,只要不帶循環(huán)之類的就可以不用聲明inline。

inline只有在達(dá)到一定調(diào)用頻率量級(jí)上才會(huì)顯得快。比如:Release編譯 /O2開啟,第一種10億次循環(huán)調(diào)用的差距大概在幾十毫秒。第二種反而比非inline慢幾到十幾毫秒。

結(jié)論:inline沒必要使用

如果是在頭文件中實(shí)現(xiàn)類函數(shù)體,inline關(guān)鍵字不必使用,因?yàn)榫幾g器默認(rèn)會(huì)將頭文件實(shí)現(xiàn)的類函數(shù)盡量?jī)?yōu)化為inline,而且這種破壞封裝性,如果是編譯給別人用的庫(kù)還是算了。

如果是在源文件中實(shí)現(xiàn)類函數(shù)體,inline關(guān)鍵字不能用,因?yàn)槟悴荒鼙WC該源文件一定需要調(diào)用該函數(shù),可能造成其它源文件的lnk2001 lnk2019鏈接錯(cuò)誤。

如果追求極致性能又怕編譯器不靠譜,請(qǐng)?jiān)陬^文件中聲明inline且同時(shí)實(shí)現(xiàn)函數(shù)體,即便如此,編譯器也會(huì)考量是否可編譯為inline函數(shù),并且前提是優(yōu)化選項(xiàng)開啟,比如VS的 /O2、g++的 -O2

本人僅在vs2012 release下做過簡(jiǎn)單測(cè)試,歡迎交流。

?

inline與lnk2001、lnk2019,雞肋?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 精品一区久久 | 无码免费一区二区三区免费播放 | 久久伊人亚洲 | 亚洲欧洲日本无在线码天堂 | gvg668 | 大插香蕉| 欧美在线网站 | 五月婷久久 | 一区二区三区在线免费观看 | 亚洲免费资源 | JLZZJLZZ日本人护士水好多 | 午夜免费观看福利片一区二区三区 | 91草莓 | 日本大学生免费一级一片 | 91看片官网| 亚洲精品一区二区三区福利 | 久草视频在线免费播放 | 狠狠色丁香婷婷综合橹不卡 | 久久久精品视频免费观看 | 久久精品在线 | 久久中文字幕一区二区 | 免费高清av | 免费看黄a | 国产日韩欧美中文 | 99国产精品久久久久久久成人热 | 午夜激情视频 | 日韩电影一区二区三区 | 91网站在线免费观看 | 久久久久草| 午夜精品一区二区三区免费视频 | 亚洲综合五月天欧美 | 久久一区二区三区不卡 | 国产换爱交换乱理伦片 | 亚洲国产精品久久久久久网站 | 日本高清中文字幕一区二区三区 | 午夜影院普通 | 欧美一级成人免费大片 | 天天操妹子 | 羞羞视频网站在线看 | 一区二区三区国产精品 | 91精品欧美一区二区三区 |