extern“C”的作用詳解
2021-12-27由 嵌入式軟體開發 發表于 歷史
前言
如果你做過Android frameworks開發的話,或者做過jni開發的話,肯定經常看到如下程式碼:
#ifdef __cplusplusextern “C” {#endif// 正式定義。。。#ifdef __cplusplus}#endif
如果你是個C語言開發者,看到這個時可能感到疑惑,為什麼要有一個extern “C”呢?
作用
為什麼C語言開發者不常見到這種語法呢,因為這種語法其實是C++中的。
extern “C”的主要作用就是為了實現C++程式碼呼叫其他C語言程式碼。加上extern “C”後,會
指示編譯器這部分程式碼按C語言的進行編譯
,而不是C++的。由於C++支援函式過載,因此編譯器編譯函式的過程中會將函式的引數型別新增到編譯後的程式碼中,而不僅僅是函式名;而C語言並不支援函式過載,因此編譯C語言程式碼的函式時不會帶上函式的引數型別,一般只包括函式名。
extern “C”有兩個含義:
被extern “C”限定的函式或變數是extern型別。
被extern “C”修飾的變數和函式是按照C語言方式進行編譯。
一篇短小的文章,面試必備!