全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:8203
推到 Plurk!
推到 Facebook!

extern的用法

 
--> -->
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
s921132452000
一般會員


發表:6
回覆:3
積分:1
註冊:2006-08-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-08-26 02:47:36 IP:210.71.xxx.xxx 未訂閱
extern的確是可以把A.cpp所產出的結果值送到B.cpp裡面,可是不知為何把所產出的值拿來在B.cpp裡面做判斷卻發生沒有作用的情形,不知道是不是打錯了還是函式沒有連結到B.cpp

以下是我的問題:

A.cpp

char test;
void a( void )
{
extern char test;
}

B.cpp
void b( void )
{
char test;
}

還是

A.cpp

char test;
void a( void )
{
extern char test;
}

B.cpp
void b( void )
{
extern char test;
}

到底是哪一個對的呢??還是都錯??

那除了extern以外是否還有其他跟extern一樣,可以做外部連結ㄋ,小弟在這方面弄很久,但是仍然不得其解,煩請各位程式高手幫忙一下,謝謝
<!--
-->
<!--include virtual="/pc2020v5/Conference2006/promo2.asp"--> <!-- -->
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="300" height="250" id=ShockwaveFlash1> <embed src="http://www.programmer-club.com/pc2020v5/images/MK/MK_20051118_300x250_my.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="300" height="250"></embed> </object>
<!--
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-08-26 04:43:24 IP:61.229.xxx.xxx 未訂閱
都不正確! 每個變數都有其視野範圍和生存時間,這是要精熟程式很重要的課程!

我簡單的講一下,等有空一點再多說明:
1/ 在function外定義的變數就叫外部變數,相反的在function內就叫內部變數
2/ 外部變數的視野是從定義的開始那行到本身檔案結束的最後一行(此稱自然視野)
3/ 若外在變數要被其他的檔案所用,那就要在別的檔案那裡宣告extern,以表它定義在別的檔上(此稱視野擴展)

由上面的3條規則你可以了解…你正確的寫法應該是:

A.cpp

char test;
void a( void )
{
test = 'A'; //直接享用test,無需extern
}

B.cpp
void b( void )
{
extern char test; //對的,說明test在別的檔上
puts(test); //然後再享用
}

===================引 用 文 章===================
extern的確是可以把A.cpp所產出的結果值送到B.cpp裡面,可是不知為何把所產出的值拿來在B.cpp裡面做判斷卻發生沒有作用的情形,不知道是不是打錯了還是函式沒有連結到B.cpp

以下是我的問題:

A.cpp

char test;
void a( void )
{
extern char test;
}

B.cpp
void b( void )
{
char test;
}

還是

A.cpp

char test;
void a( void )
{
extern char test;
}

B.cpp
void b( void )
{
extern char test;
}

到底是哪一個對的呢??還是都錯??

那除了extern以外是否還有其他跟extern一樣,可以做外部連結ㄋ,小弟在這方面弄很久,但是仍然不得其解,煩請各位程式高手幫忙一下,謝謝
<!--
-->
<!--include virtual="/pc2020v5/Conference2006/promo2.asp"--> <!-- -->
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="300" height="250" id=ShockwaveFlash1> <embed src="http://www.programmer-club.com/pc2020v5/images/MK/MK_20051118_300x250_my.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="300" height="250"></embed> </object>
<!--
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-08-26 04:47:20 IP:61.229.xxx.xxx 未訂閱
怕你直接貼了用,所以修正一下我剛的筆誤,把puts換成
printf("%c", test); //然後再享用
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
系統時間:2024-12-18 10:41:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!