溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

extern "c"的作用詳解

發(fā)布時間:2020-07-23 16:03:22 來源:網(wǎng)絡(luò) 閱讀:804 作者:947154267yjn 欄目:編程語言

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


         這個功能十分有用,因為在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"包含雙重語義,從字面上可以知道,首先,被他修飾的目標(biāo)是"extern"的;其次,被他修飾的目標(biāo)代碼是"C"的。被extern "c"限定的函數(shù)和變量
是extern的。
     看這個例子: extern int a;   僅僅是一個變量的聲明,并不是在定義變量a,也沒有為a分配空間。變量a在所有模塊中作為一種全局變量只能被定義一次,否則會出錯。
   

extern "c"使用要點:
   1、可以使單一語句。
      extern "c" double sqrt(double)
   2、可以使復(fù)合語句,相當(dāng)于復(fù)合語句中的聲明都加了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ù)有多個聲明,可以都加extern "c",也可以只出現(xiàn)在第一次聲明中,后面的聲明會接受第一個鏈接指示符的規(guī)則。

 

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI