extern 使用方法具体解释
在C語言中,修飾符extern用在變量或者函數的聲明前,用來說明“此變量/函數是在別處定義的。要在此處引用”。(extern能夠置于變量或者函數前,以標示變量或者函數的定義在別的文件里,提示編譯器遇到此變量和函數時在其它模塊中尋找其定義 )
大概extern ?使用方法為例如以下幾種方式:
其主要使用方法是:
- 在此文件里聲明別的文件的變量時用extern
- 在cpp程序文件里用到c的庫函數時用extern
頭文件.h
extern volatile SERV103_LINK servLink;extern YaoXinStrucType *pstYx;static int ycSpace = 500;static int yxSpace = 1000;static int sjbgSpace = 10*1000;static int gzbgSpace = 30*1000;然后須要在某個.cpp 文件里引用
某一個 .cpp (多個cpp)
iec103_serv_send_sjbg((SERV103_LINK *)&servLink ,sjbgData, 1);
ST_RET iec103_serv_send_zjbg(SERV103_LINK *servLink, SoeItemType *zjbgData, ST_UCHAR sendReason);
說明:我是在不同的cpp 中調用
還有非常重要的一點是,extern int v能夠放在a.c中的不論什么
地方,比方你能夠在a.c中的函數fun定義的開頭處聲明extern int v。然后就能夠引用到變量v了,僅僅只是這樣僅僅能在函數fun作用域中引用v罷了,這還是變量作用域的問題。對于這一點來說。非常多人使用的時候都心存顧慮。好像extern聲明僅僅能用于文件作用域似的。函數與變量都一樣:(上面的樣例就是在函數中使用)
2. extern修飾函數聲明。從本質上來講,變量和
函數沒有差別。函數名是指向函數二進制塊開頭處的指針。
假設文件a.c須要引用b.c中的函數。比方在b.c中原型是int fun(int mu),那么就能夠在a.c中聲明extern int fun(int mu),然后就能使用fun來做不論什么事情。就像變量的聲明一樣,extern int fun(int mu)能夠放在a.c中不論什么地方,而不一定非要放在a.c的文件作用域的范圍中。
對其它模塊中函數的引用。最經常使用的方法是包括這些函數聲明的頭文件。
使用extern和包括頭文件來引用函數有什么差別呢?extern的引用方式比包括頭文件要簡潔得多!extern的用法是直接了當的。想引用哪個函數就用extern聲明哪個函數。
這大概是KISS原則的一種體現吧!這樣做的一個明顯的優(yōu)點是,會加速程序的編譯(確切的說是預處理)的過程。節(jié)省
時間。在大型C程序編譯過程中,這樣的差異是很明顯的。
3. 此外,extern修飾符可用于指示C或者C++函數的調用規(guī)范。比方在C++中調用C庫函數。就須要在C++程序中用extern “C”聲明要引用的函數。
這是給鏈接器用的,告訴鏈接器在鏈接的時候用C函數規(guī)范來鏈接。
主要原因是C++和C程序編譯完畢后在目標代碼中命名規(guī)則不同。
總結
以上是生活随笔為你收集整理的extern 使用方法具体解释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到妹妹不在了是怎么回事
- 下一篇: 发手气红包算法