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