中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

extern"c"的作用詳解

        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)

成都定制網(wǎng)站建設(shè)
彭山县| 应城市| 青龙| 会同县| 阜新市| 恭城| 中牟县| 来安县| 屯留县| 东乡族自治县| 久治县| 利津县| 札达县| 龙门县| 康保县| 巩留县| 将乐县| 双流县| 宜州市| 宜宾县| 南昌县| 曲麻莱县| 安平县| 元朗区| 科技| 武川县| 苏州市| 洞口县| 富蕴县| 长垣县| 高唐县| 杂多县| 清丰县| 天长市| 遵义市| 扶沟县| 错那县| 射阳县| 沈阳市| 桐庐县| 英德市|