青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C底世界

C 學(xué)習(xí)庫(kù)

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  3 Posts :: 1 Stories :: 0 Comments :: 0 Trackbacks

常用鏈接

留言簿(12)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

1 基本解釋

  extern可以置于變量或者函數(shù)前,以標(biāo)示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時(shí)在其他模塊中尋找其定義。

  另外,extern也可用來進(jìn)行鏈接指定。

2 問題:extern 變量

  在一個(gè)源文件里定義了一個(gè)數(shù)組:char a[6];
  在另外一個(gè)文件里用下列語(yǔ)句進(jìn)行了聲明:extern char *a;
  請(qǐng)問,這樣可以嗎?


  答案與分析:
  1)、不可以,程序運(yùn)行時(shí)會(huì)告訴你非法訪問。原因在于,指向類型T的指針并不等價(jià)于類型T的數(shù)組。extern char *a聲明的是一個(gè)指針變量而不是字符數(shù)組,因此與實(shí)際的定義不同,從而造成運(yùn)行時(shí)非法訪問。應(yīng)該將聲明改為extern char a[ ]。

  2)、例子分析如下,如果a[] = "abcd",則外部變量a=0x61626364 (abcd的ASCII碼值),*a顯然沒有意義

  顯然a指向的空間(0x61626364)沒有意義,易出現(xiàn)非法內(nèi)存訪問。

  3)、這提示我們,在使用extern時(shí)候要嚴(yán)格對(duì)應(yīng)聲明時(shí)的格式,在實(shí)際編程中,這樣的錯(cuò)誤屢見不鮮。

  4)、extern用在變量聲明中常常有這樣一個(gè)作用,你在*.c文件中聲明了一個(gè)全局的變量,這個(gè)全局的變量如果要被引用,就放在*.h中并用extern來聲明。

4 問題:extern 函數(shù)2

  當(dāng)函數(shù)提供方單方面修改函數(shù)原型時(shí),如果使用方不知情繼續(xù)沿用原來的extern申明,這樣編譯時(shí)編譯器不會(huì)報(bào)錯(cuò)。但是在運(yùn)行過程中,因?yàn)樯倭嘶蛘叨嗔溯斎雲(yún)?shù),往往會(huì)照成系統(tǒng)錯(cuò)誤,這種情況應(yīng)該如何解決?

  答案與分析:

  目前業(yè)界針對(duì)這種情況的處理沒有一個(gè)很完美的方案,通常的做法是提供方在自己的xxx_pub.h中提供對(duì)外部接口的聲明,然后調(diào)用方include該頭文件,從而省去extern這一步。以避免這種錯(cuò)誤。

  寶劍有雙鋒,對(duì)extern的應(yīng)用,不同的場(chǎng)合應(yīng)該選擇不同的做法。

5 問題:extern “C”

  在C++環(huán)境下使用C函數(shù)的時(shí)候,常常會(huì)出現(xiàn)編譯器無(wú)法找到obj模塊中的C函數(shù)定義,從而導(dǎo)致鏈接失敗的情況,應(yīng)該如何解決這種情況呢?

  答案與分析:

  C++語(yǔ)言在編譯的時(shí)候?yàn)榱私鉀Q函數(shù)的多態(tài)問題,會(huì)將函數(shù)名和參數(shù)聯(lián)合起來生成一個(gè)中間的函數(shù)名稱,而C語(yǔ)言則不會(huì),因此會(huì)造成鏈接時(shí)找不到對(duì)應(yīng)函數(shù)的情況,此時(shí)C函數(shù)就需要用extern “C”進(jìn)行鏈接指定,這告訴編譯器,請(qǐng)保持我的名稱,不要給我生成用于鏈接的中間函數(shù)名。

  下面是一個(gè)標(biāo)準(zhǔn)的寫法:

//在.h文件的頭上
#ifdef __cplusplus
#if __cplusplus
extern "C"{
 #endif
 #endif /* __cplusplus */
 …
 …
 //.h文件結(jié)束的地方
 #ifdef __cplusplus
 #if __cplusplus
}
#endif
#endif /* __cplusplus */
 

3 問題:extern 函數(shù)1

  常常見extern放在函數(shù)的前面成為函數(shù)聲明的一部分,那么,C語(yǔ)言的關(guān)鍵字extern在函數(shù)的聲明中起什么作用?

  答案與分析:

  如果函數(shù)的聲明中帶有關(guān)鍵字extern,僅僅是暗示這個(gè)函數(shù)可能在別的源文件里定義,沒有其它作用。即下述兩個(gè)函數(shù)聲明沒有明顯的區(qū)別:

extern int f(); 和int f();
  當(dāng)然,這樣的用處還是有的,就是在程序中取代include “*.h”來聲明函數(shù),在一些復(fù)雜的項(xiàng)目中,我比較習(xí)慣在所有的函數(shù)聲明前添加extern修飾。
posted on 2008-07-10 11:34 C_Student 閱讀(4271) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美激情精品久久久六区热门 | 亚洲欧美春色| 欧美国产日韩a欧美在线观看| 亚洲少妇自拍| 亚洲伦伦在线| 亚洲一二三区视频在线观看| 亚洲激情图片小说视频| 在线观看成人av| 亚洲国产另类精品专区| 国产亚洲视频在线| 免费91麻豆精品国产自产在线观看| 亚洲欧美日韩在线播放| 国产精品99久久久久久白浆小说 | 国产麻豆9l精品三级站| 国产精品乱码一区二三区小蝌蚪| 欧美系列精品| 国产精品久久久久久久久久妞妞| 免费观看30秒视频久久| 免费久久精品视频| 欧美日韩另类一区| 国内精品久久久久影院 日本资源| 国产日韩欧美日韩大片| 永久久久久久| 午夜欧美不卡精品aaaaa| 久久先锋资源| 亚洲综合久久久久| 欧美国产日韩在线| 国产日韩综合| 国产精品99久久99久久久二8 | 国产精品夜夜嗨| 亚洲狠狠丁香婷婷综合久久久| 亚洲最新视频在线播放| 久久久久9999亚洲精品| 亚洲第一精品夜夜躁人人躁| 99热这里只有精品8| 麻豆精品视频| 在线成人亚洲| 毛片精品免费在线观看| 香蕉乱码成人久久天堂爱免费| 欧美女主播在线| 亚洲国产精品一区二区第一页| 亚洲无线一线二线三线区别av| 欧美承认网站| 欧美日韩高清区| 亚洲一区二区三区在线视频| 亚洲国产日韩欧美综合久久| 女仆av观看一区| 久久久久久久久久久久久女国产乱 | 久久av一区二区三区| 国产一区二区三区在线观看精品 | 亚洲另类在线视频| 久久久国产精品一区二区中文| 亚洲综合成人婷婷小说| 国产精品亚洲综合色区韩国| 亚洲免费影视| 欧美在线亚洲在线| 亚洲国产精品高清久久久| 亚洲精品黄色| 国产一区清纯| 欧美午夜电影在线| 欧美a级片一区| 国产精品美女主播在线观看纯欲| 久久免费少妇高潮久久精品99| 免费成人激情视频| 午夜精品久久久久久久99热浪潮| 久久精品国产99精品国产亚洲性色| 亚洲电影有码| 欧美有码视频| 午夜精品一区二区三区在线播放| 久久久欧美一区二区| 亚洲综合国产激情另类一区| 久久久久久夜| 一本色道久久综合狠狠躁的推荐| 亚洲激情一区二区三区| 国产精品一区二区你懂得| 亚洲国产清纯| 亚洲第一在线综合网站| 亚洲免费婷婷| 欧美一级片在线播放| 国产精品美女在线观看| 亚洲欧洲精品一区| 亚洲久久视频| 欧美精品日日鲁夜夜添| 亚洲第一区色| 日韩一区二区免费看| 美女免费视频一区| 亚洲第一精品夜夜躁人人爽| 亚洲国产aⅴ天堂久久| 久久久无码精品亚洲日韩按摩| 久久久xxx| 亚洲国产一区二区三区在线播| 玖玖精品视频| 亚洲人成在线观看一区二区| 91久久精品国产91久久| 欧美黑人在线观看| 一区二区三区你懂的| 亚洲一区视频在线| 狠久久av成人天堂| 欧美黄色一区二区| 一区二区免费在线播放| 久久精品国产欧美亚洲人人爽| 亚洲第一主播视频| 欧美日韩视频在线一区二区观看视频 | 激情五月婷婷综合| 欧美高清视频一二三区| 一区二区三区日韩精品| 裸体丰满少妇做受久久99精品| 亚洲第一视频网站| 亚洲中无吗在线| 亚洲国产成人久久综合一区| 欧美午夜免费| 欧美男人的天堂| av72成人在线| 亚洲欧美亚洲| 91久久久亚洲精品| 久久中文在线| 久久国产一区| 欧美一区二区黄色| 亚洲一区二区动漫| 一本色道久久99精品综合| 伊人久久久大香线蕉综合直播| 欧美精品一区二区三区蜜臀| 久久久久99| 久久av在线| 久热国产精品| 欧美国产成人精品| 欧美精品三级日韩久久| 欧美激情在线狂野欧美精品| 欧美激情女人20p| 欧美精品日韩精品| 欧美色图天堂网| 国产精品一级| 亚洲国产欧美久久| 一本色道久久综合精品竹菊| 99精品视频网| 久久福利毛片| 欧美成人精品1314www| 91久久夜色精品国产九色| 99视频精品全国免费| 亚洲欧美日韩精品久久久| 欧美一级视频精品观看| 久久一区二区三区四区| 欧美韩日一区二区三区| 国产精品成人播放| 精品96久久久久久中文字幕无| 久久久蜜桃一区二区人| 欧美国产一区视频在线观看| 国产伦精品一区二区三区高清| 精品成人一区| 午夜精品视频在线观看一区二区| 男人的天堂成人在线| 亚洲一区二区三区在线观看视频| 欧美1区视频| 亚洲国产岛国毛片在线| 亚洲欧美精品在线观看| 免费亚洲电影| 久久精品国产91精品亚洲| 国产精品大片wwwwww| 一本久道久久久| 亚洲人线精品午夜| 欧美国产综合| 一本一道久久综合狠狠老精东影业 | 欧美另类99xxxxx| 亚洲精品少妇网址| 亚洲国产三级| 欧美三级欧美一级| 一区二区毛片| 午夜精品久久久久| 激情成人av在线| 欧美福利小视频| 欧美精品免费观看二区| 中文亚洲免费| 欧美一区二区在线免费播放| 国产一区视频在线看| 欧美11—12娇小xxxx| 欧美国产日产韩国视频| 一区二区三区视频在线观看| 99精品国产一区二区青青牛奶| 国产精品二区影院| 另类av一区二区| 欧美色视频日本高清在线观看| 性xx色xx综合久久久xx| 久久中文字幕导航| 国产精品a久久久久久| 一区二区av在线| 亚洲欧美日韩中文视频| 日韩视频一区二区在线观看 | 亚洲私拍自拍| 黄色成人91| 亚洲免费视频一区二区| 亚洲美女在线观看| 久久精品亚洲一区| 亚洲欧美日韩专区| 欧美国产日韩xxxxx| 久久人人97超碰精品888| 国产精品久在线观看| 在线性视频日韩欧美| 在线一区二区日韩| 欧美色区777第一页| 99热这里只有成人精品国产|