新聞中心
c語(yǔ)言中的extern怎么用?
extern在c中就是個(gè)外部申明,因?yàn)镃是先申明再使用,當(dāng)你想調(diào)用的變量或者函數(shù)不在你的模塊當(dāng)中,你可以使用外部申明。在使用外部申明的時(shí)候要特別注意,因?yàn)檫@只是個(gè)申明,并不是實(shí)體,當(dāng)出現(xiàn)聲明和實(shí)體不符的時(shí)候,編譯器是不會(huì)管的,鏈接后就可能出現(xiàn)錯(cuò)誤。比如你的實(shí)體是 int sample( int x ) ;而你在申明的時(shí)候是extern int sample( void ) ; 所以我不喜歡這種方式去聲明。特別是多個(gè)人合作項(xiàng)目的時(shí)候,這種方法往往導(dǎo)致的結(jié)果很難去debug。即使是別人寫好提供給你的,那他在修改了函數(shù)或者變量的類型,參數(shù),往往會(huì)忘記修改給你的申明。

公司主營(yíng)業(yè)務(wù):網(wǎng)站制作、網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。成都創(chuàng)新互聯(lián)推出寧江免費(fèi)做網(wǎng)站回饋大家。
extern 還有個(gè)作用就是當(dāng)你C和C++混用的時(shí)候,比如在C++中要使用C, 那么就要告訴編譯器,你這段代碼使用的是C,需要用C的編譯器去編譯,那可以使用extern "C" { .........} 否則編譯會(huì)有問(wèn)題
如何在C#工程中調(diào)用C語(yǔ)言外部庫(kù)?
1、將DLL文件復(fù)制到編譯路徑目錄(系統(tǒng)目錄或項(xiàng)目目錄等等);
2、導(dǎo)出DLL的功能接口;如:[DllImport("WDT_DIO64.dll")]internal static extern int InitDIO();這個(gè)DLL在C中的頭文件是這樣表達(dá)的:BOOL InitDIO(void);BOOL 在C中是int類型的,對(duì)應(yīng)的C#也是int 類型,調(diào)用DLL通常都是靜態(tài)的外部引進(jìn)的(static extern),internal 是可見屬性定義(自己根據(jù)需要定義);
3、參考DLL對(duì)應(yīng)的頭文件的信息。如果C/C++封裝的dll是打算通用的,通常發(fā)布頭文件,頭文件在C中是編譯器所需的文件,DLL的關(guān)鍵信息都在頭文件展示出來(lái)。我們可以通過(guò)閱讀頭文件的包含信息(如結(jié)構(gòu)體、宏定義,函數(shù)原型、功能注釋等),使用C#方式來(lái)導(dǎo)出DLL的函數(shù)接口來(lái)調(diào)用DLL(如上2、)。
4、在需要的地方加上參數(shù)調(diào)用導(dǎo)出的函數(shù)接口。
extern是什么變量?
是一個(gè)修飾符。
在C語(yǔ)言中,修飾符extern用在變量或者函數(shù)的聲明前,用來(lái)說(shuō)明“此變量/函數(shù)是在別處定義的,要在此處引用”。
extern可置于變量或者函數(shù)前,以表示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量或函數(shù)時(shí),在其它模塊中尋找其定義。另外,extern也可用來(lái)進(jìn)行鏈接指定。
c語(yǔ)言中是如何實(shí)現(xiàn)模塊化的?
c語(yǔ)言是模塊化編程的工具,模塊如何組織,模塊之間如何交互應(yīng)該是個(gè)大問(wèn)題。我覺得有以下幾個(gè)值得注意的地方(不對(duì)的地方請(qǐng)大家指正):
1、每個(gè)源文件就是一個(gè)獨(dú)立的模塊,它應(yīng)該能夠在不連接任何其它模塊、不需要其它源文件的情況下獨(dú)立編譯。
2、模塊之間是通過(guò)函數(shù)、常量、變量、結(jié)構(gòu)定義、宏(似乎也是常量的一種)進(jìn)行交互的
3、每個(gè)模塊應(yīng)該包括導(dǎo)入和導(dǎo)出兩個(gè)部分,比如要調(diào)用另外一個(gè)模塊的函數(shù)foo(),需要 extern int foo(); 這應(yīng)該屬于模塊的導(dǎo)入部分 而由該模塊提供的函數(shù),應(yīng)該在相應(yīng)的頭文件中聲明,作為模塊的導(dǎo)出部分。 模塊的導(dǎo)出部分應(yīng)該放在該模塊的頭文件中。
4、如果只在本模塊使用的變量,在本模塊中定義成static的就可以了;否則就是全局變量,全局變量在頭文件中聲明一下,同時(shí)也作為模塊的導(dǎo)出部分。
5、宏既可以定義在頭文件中,也可以定義在源文件中。如果宏只是模塊中用到,相當(dāng)于局部常量,放到源文件中好了;如果其它模塊也要用到,那么把它放到頭文件中去。
6、結(jié)構(gòu)定義似乎都放在頭文件中。是不是應(yīng)該另外有一個(gè)頭文件,專門用來(lái)定義結(jié)構(gòu)??? 首先,我不知道自己的想法是否正確;其次,關(guān)于到底應(yīng)該怎么樣組織文件,我想應(yīng)該也是有個(gè)標(biāo)準(zhǔn)的,可惜我沒找到這樣的資料。希望有高人能站出來(lái)指點(diǎn)一下,謝謝
到此,以上就是小編對(duì)于linux環(huán)境c程序設(shè)計(jì)的問(wèn)題就介紹到這了,希望這4點(diǎn)解答對(duì)大家有用。
本文標(biāo)題:程序設(shè)計(jì)Linux環(huán)境下外部程序設(shè)計(jì)(linuxextern)
當(dāng)前地址:http://www.dlmjj.cn/article/ccedhoj.html


咨詢
建站咨詢
