extern "c"的主要作用就是為了能夠正確實(shí)現(xiàn)C++代碼調(diào)用其它C語(yǔ)言代碼。加上extern "c"后,會(huì)指示編譯器這部分代碼按照C語(yǔ)言的風(fēng)格進(jìn)行編譯。
由于C++支持函數(shù)重載,因此編譯器編譯函數(shù)的過(guò)程中會(huì)將函數(shù)的參數(shù)類(lèi)型也加到編譯后的代碼中,而不僅僅是函數(shù)名;C語(yǔ)言并不支持函數(shù)重載,因此編譯C代碼的函數(shù)時(shí)不會(huì)帶上函數(shù)的參數(shù)類(lèi)型,一般只包括函數(shù)名。

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、開(kāi)平ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的開(kāi)平網(wǎng)站制作公司
這個(gè)功能十分有用,因?yàn)樵贑++出現(xiàn)以前,很多代碼都是C語(yǔ)言寫(xiě)的,而且底層的庫(kù)也是C語(yǔ)言寫(xiě)的,為了更好的支持原來(lái)的C代碼和已經(jīng)寫(xiě)好的C語(yǔ)言庫(kù),需要在C++中盡可能的支持C,而extern "c"就是其中的一個(gè)策略。
這個(gè)功能主要用在下面的情況:
1、C++代碼調(diào)用C語(yǔ)言代碼
2、在C++的頭文件中使用
3、在多個(gè)人協(xié)同開(kāi)發(fā)時(shí),可能會(huì)出現(xiàn)有人編寫(xiě)C代碼,有人能編寫(xiě)C++代碼,這樣的情況也可以使用extern "c"。
extern "c"包含雙重語(yǔ)義,從字面上可以知道,首先,被他修飾的目標(biāo)是"extern"的;其次,被他修飾的目標(biāo)代碼是"C"的。被extern "c"限定的函數(shù)和變量
是extern的。
看這個(gè)例子: extern int a; 僅僅是一個(gè)變量的聲明,并不是在定義變量a,也沒(méi)有為a分配空間。變量a在所有模塊中作為一種全局變量只能被定義一次,否則會(huì)出錯(cuò)。
extern "c"使用要點(diǎn):
1、可以使單一語(yǔ)句。
extern "c" double sqrt(double)
2、可以使復(fù)合語(yǔ)句,相當(dāng)于復(fù)合語(yǔ)句中的聲明都加了extern "c"。
extern "c"
{
double sqrt(double);l
int min(int,int);
}
3、可以包含頭文件,相當(dāng)于頭文件中的聲明都加了extern "c"。
extern "c"
{
#include<cmath>
}
4、不可以將extern "c"添加到函數(shù)內(nèi)部。
5、如果函數(shù)有多個(gè)聲明,可以都加extern "c",也可以只出現(xiàn)在第一次聲明中,后面的聲明會(huì)接受第一個(gè)鏈接指示符的規(guī)則。
名稱(chēng)欄目:extern"c"的作用詳解
文章出自:http://chinadenli.net/article16/jgpsdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、建站公司、微信公眾號(hào)、軟件開(kāi)發(fā)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)