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

再談下聲明、定義、初始化、賦值和extern

雖然定義也是聲明,但為了方便說(shuō)明問(wèn)題,下文中的聲明只是單純的聲明,定義就只是定義。

1.      聲明、定義、初始化和賦值四個(gè)術(shù)語(yǔ)有著本質(zhì)的不同,雖然有時(shí)候看起來(lái)差不多甚至完全一樣,但如果不搞清楚很容易出現(xiàn)錯(cuò)誤,或者錯(cuò)了不知道怎么改。

 

2.     a: extern關(guān)鍵詞用來(lái)表明這是一個(gè)聲明:extern int I;變量i就是一個(gè)聲明。聲明前面一定要有一個(gè)關(guān)鍵字extern,沒(méi)有這個(gè)關(guān)鍵詞就不是一個(gè)聲明。

b: 沒(méi)有extern就是一個(gè)定義,比如int i=9;是一個(gè)定義,特別要注意的是int i;這也是一個(gè)定義。

c: 初始化就是在變量定義時(shí)給變量一個(gè)初值,所以初始化語(yǔ)句也一定是一個(gè)定義語(yǔ)句,但反過(guò)來(lái)就不對(duì)了,因?yàn)轭愃朴冢?/span>int i;就是定義,但沒(méi)有初始化。特別要注意的是:extern int i = 9;雖然有extern關(guān)鍵詞,但是因?yàn)槌跏蓟耍赃@也是一個(gè)定義,不是聲明。

d: 賦值語(yǔ)句就簡(jiǎn)單了,賦值語(yǔ)句是給一個(gè)已經(jīng)定義的變量(不管這個(gè)變量有沒(méi)有初始化)一個(gè)新值。特別要注意的是,要給賦值的變量必須已經(jīng)定義過(guò)了,僅僅聲明是不行的。

 

3.       extern關(guān)鍵詞除了表明這是一個(gè)聲明以外,更重要的是表明:所聲明的變量的定義可能是在程序中其他文件里。如下代碼

    //file1.cpp

#include <iostream>
using namespace std;
extern int i;//這是一個(gè)聲明,告訴編譯器變量i的定義有可能是在其他源文件中,即使本文件中沒(méi)有i的定義,你也不要報(bào)錯(cuò)。
void main()
{
    extern int i;//同樣是對(duì)i的聲明,作用與上面的聲明完全一樣,說(shuō)明聲明可以存在多個(gè),實(shí)際上這兩個(gè)聲明只要任意一個(gè)就可以了。但是兩個(gè)聲明語(yǔ)句如果一個(gè)都沒(méi)有,編譯器就會(huì)認(rèn)為變量i沒(méi)有定義,會(huì)報(bào)錯(cuò)。

    i=0;//賦值語(yǔ)句,給變量i一個(gè)新值,變量賦值前必須要已經(jīng)定義了,如果不存在file2文件中的定義語(yǔ)句,雖然不會(huì)出現(xiàn)編譯錯(cuò)誤,但是鏈接會(huì)有錯(cuò)。
    cout<<i;
}

//file2.cpp

int i;//首先是一個(gè)定義,而且是一個(gè)沒(méi)有初始化的定義(不過(guò)實(shí)際上全局變量i被默認(rèn)初始化為0),變量i被定義在file2源文件中

 

 

4.      一個(gè)程序中可能包括不只一個(gè)文件,所有文件中同一個(gè)變量(其實(shí)主要說(shuō)的全局變量)必須總共只能定義一次,但是聲明可以有無(wú)數(shù)個(gè)。而且如果文件A中用到的變量的定義是在其他文件中,那么在文件A中用這個(gè)變量之前,一定要加上一句extern聲明語(yǔ)句,告訴編譯器我所用的這個(gè)變量有可能是在其他文件里

5.   extern int i=9;上面已經(jīng)提到雖然有extern,但這也是一個(gè)定義,因?yàn)槌跏蓟恕?span style="color: red; ">類似于這種有extern也有初始化的語(yǔ)句,只能出現(xiàn)在全局作用域,如果出現(xiàn)在函數(shù)內(nèi)部,這是錯(cuò)誤的。

6.       (轉(zhuǎn))有關(guān)編譯器的一個(gè)特點(diǎn):現(xiàn)代編譯器一般都屬于按文件編譯,就是說(shuō)編譯時(shí)多個(gè)源文件自己編譯自己的,互不影響,好像只有自己一個(gè)文件。只要每個(gè)文件編譯時(shí)沒(méi)有出現(xiàn)錯(cuò)誤,那么就不會(huì)發(fā)生編譯時(shí)錯(cuò)誤。但是沒(méi)有發(fā)生編譯錯(cuò)誤,并不代表程序就沒(méi)有錯(cuò)誤,因?yàn)檫€會(huì)發(fā)生鏈接錯(cuò)誤。比如下面這兩個(gè)代碼

     //A.cpp
int i;//這是變量i的定義
 
void main()
{
}

//B.cpp
int i;//這也是變量i的定義
編譯時(shí)兩個(gè)文件A和B是相互不影響的,所以編譯時(shí)不會(huì)出現(xiàn)任何錯(cuò)誤,但是這個(gè)程序是有問(wèn)題的,因?yàn)槿肿兞縤是被定義了兩次的,所以鏈接時(shí)就會(huì)報(bào)告類似于下面的錯(cuò)誤:

B.obj : error LNK2005: "int i" (?i@@3HA) already defined in A.obj

Debug/A.exe : fatal error LNK1169: one or more multiply defined symbols found

另外上面也提到了,編譯時(shí)各個(gè)文件是相互不影響的,編譯器是不會(huì)認(rèn)為在這個(gè)文件中沒(méi)有定義的變量其實(shí)很有可能人家是個(gè)全局變量,在其他文件中定義了,這就要報(bào)錯(cuò)。解決方法就是用extern聲明一個(gè)變量,告訴編譯器人家這個(gè)變量不是沒(méi)有定義,只是在其他文件中定義了,你別報(bào)錯(cuò)了。

 

posted on 2012-06-07 15:41 古月 閱讀(3766) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C/C++

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿

隨筆分類

隨筆檔案

文章檔案

C++/C

搜索

積分與排名

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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精品二区三区| 亚洲精品欧美激情| 在线视频一区观看| 韩日精品视频| 亚洲激情影院| 国产伦精品免费视频| 久久嫩草精品久久久精品一| 免播放器亚洲| 亚洲一区国产一区| 久久精品噜噜噜成人av农村| 日韩一本二本av| 亚洲午夜激情| 亚洲国产综合91精品麻豆| 99精品福利视频| 韩国女主播一区| 亚洲美女尤物影院| 韩国一区电影| 一本色道久久88综合日韩精品| 国产亚洲精品资源在线26u| 亚洲观看高清完整版在线观看| 欧美日韩综合另类| 欧美成人一区二区在线 | 亚洲第一福利视频| 国产精品第十页| 免费欧美高清视频| 国产精品区二区三区日本| 欧美黑人在线观看| 国产欧美 在线欧美| 亚洲国产欧美一区| 精品91久久久久| 亚洲一二三区视频在线观看| 亚洲日本视频| 久久久久国产一区二区三区四区 | 狠狠色狠狠色综合日日五| 亚洲毛片av| 亚洲人成人一区二区在线观看| 亚洲欧美中文日韩v在线观看| 亚洲另类一区二区| 久久久久九九九九| 久久本道综合色狠狠五月| 欧美无砖砖区免费| 亚洲精品日韩精品| 亚洲肉体裸体xxxx137| 久久久噜噜噜久久| 久久欧美中文字幕| 韩国一区电影| 久久se精品一区二区| 欧美一级欧美一级在线播放| 欧美三日本三级三级在线播放| 亚洲国产精品成人综合| 亚洲区在线播放| 免费影视亚洲| 91久久在线| 夜夜嗨av色一区二区不卡| 欧美激情综合在线| 亚洲精品欧美一区二区三区| 日韩写真在线| 欧美日韩国产三区| 一区二区日韩伦理片| 一区二区三区国产在线观看| 欧美日韩国产综合一区二区| 亚洲人成高清| 亚洲香蕉成视频在线观看| 欧美视频中文字幕在线| 中文一区在线| 久久久久久高潮国产精品视| 国产综合在线视频| 免费成人你懂的| 亚洲日韩欧美视频一区| 亚洲午夜未删减在线观看| 国产精品久久久久aaaa九色| 先锋影音国产一区| 免费不卡在线观看av| 亚洲人成欧美中文字幕| 欧美日韩你懂的| 亚洲欧美日本精品| 欧美国产在线电影| 亚洲永久免费视频| 国产在线一区二区三区四区| 久久综合伊人| 一本色道久久精品| 久久精品一区二区三区四区| 亚洲电影激情视频网站| 欧美精品一区二区三区视频| 中文精品视频| 老司机精品久久| 中日韩男男gay无套| 国产日韩欧美在线| 欧美激情aⅴ一区二区三区| 中文网丁香综合网| 欧美丰满少妇xxxbbb| 国产精品99久久久久久久vr| 美女主播精品视频一二三四| 国产精品日韩精品欧美精品| 午夜激情亚洲| 正在播放亚洲一区| 午夜精品一区二区三区四区| 一本久久a久久精品亚洲| 亚洲裸体俱乐部裸体舞表演av| 亚洲国产欧美不卡在线观看| 在线电影一区| 亚洲黄色影片| 99热这里只有精品8| 亚洲视频播放| 亚洲女人小视频在线观看| 性视频1819p久久| 久久精品免费电影| 老司机久久99久久精品播放免费| 老鸭窝91久久精品色噜噜导演| 美女图片一区二区| 亚洲电影在线观看| 99国产精品久久久久久久成人热| 99视频超级精品| 亚洲欧美日韩在线观看a三区| 欧美一级欧美一级在线播放| 久久精品国产亚洲一区二区| 免费成人在线观看视频| 欧美日韩国产bt| 国产精品最新自拍| 在线欧美不卡| 亚洲一区二区三区激情| 久久精品亚洲国产奇米99| 欧美xart系列在线观看| 亚洲美女电影在线| 亚洲欧美日韩精品久久| 麻豆精品在线视频| 国产精品对白刺激久久久| 国产亚洲精品一区二555| 亚洲国产一区二区三区在线播| 一区二区久久久久久| 久久久xxx| 亚洲另类在线视频| 欧美在线网址| 欧美日韩国产一区| 国产一区日韩二区欧美三区| 日韩一二三在线视频播| 久久精品视频在线看| 亚洲精品国产精品国自产在线| 亚洲欧美日本精品| 欧美成人综合网站| 国内精品久久久久影院色| 在线一区二区三区四区五区| 久久一区二区三区超碰国产精品| 亚洲精品综合| 久久久久国产一区二区三区四区 | 欧美日韩在线播放一区| 国产综合av| 亚洲在线成人| 欧美激情一区二区三级高清视频| 亚洲一区日韩在线| 欧美黄色影院| 亚洲电影自拍| 久久精品人人| 亚洲午夜性刺激影院| 欧美电影免费观看高清完整版| 国产欧美一区二区三区久久人妖| 99精品国产在热久久| 欧美成人四级电影| 欧美一区在线视频| 国产精品你懂得| 亚洲一区二区三区高清不卡| 亚洲第一黄色网| 久久久久久69| 国产综合欧美在线看| 欧美一级久久久| 亚洲深夜激情| 国产精品福利在线| 亚洲视频在线免费观看| 亚洲国产综合在线| 欧美成人免费大片| 亚洲国产日韩精品| 欧美www视频在线观看| 久久久久久久久蜜桃| 狠狠色狠狠色综合系列| 久久久久**毛片大全| 亚欧美中日韩视频| 国产亚洲精品高潮| 久久精品主播| 久久精品国产清自在天天线| 国模精品一区二区三区| 久久国产主播精品| 欧美在线视频免费观看| 国内外成人在线| 久久亚洲国产成人| 可以免费看不卡的av网站| 亚洲黄色天堂| 亚洲精选在线观看| 国产精品美女久久久久aⅴ国产馆| 亚洲欧美日韩网| 亚洲欧洲av一区二区| 国产一区亚洲|