線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1842
推到 Plurk!
推到 Facebook!

請問extern的用法.謝謝

答題得分者是:richtop
kagaya
中階會員


發表:74
回覆:175
積分:59
註冊:2002-12-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-26 10:09:55 IP:211.76.xxx.xxx 未訂閱
我在unit1.cpp裡include一個自己寫的函式庫(xx.h) 然後在Form2要使用這些函式時 就必需在unit2.cpp裡先extern函式才行 函式一多就要寫extern好幾十行 不知道有何方法可以簡單的帶進來? 我曾在unit2.cpp也include函式庫 可是會有錯誤訊息.因為unit1已經include過了 謝謝
------
KUSO 無處不在
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-26 11:25:54 IP:211.76.xxx.xxx 未訂閱
kagaya 您好:    不曉得您是否在unit2.cpp中,也include過unit1.h,以致於發生您說的情形?    不過您可參考下列站上的討論,看有沒有您可以用的:    問題】請前輩指點一下include struct的方法 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=55566 問題】請問指標可以定義外在變數嗎? http://delphi.ktop.com.tw/topic.php?TOPIC_ID=55853 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
kagaya
中階會員


發表:74
回覆:175
積分:59
註冊:2002-12-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-26 17:55:43 IP:211.76.xxx.xxx 未訂閱
感謝大大 加入 #ifndef setupH #define setupH #endif 後.函式的問題就解決了 不過如果加入變數.例如: #ifndef setupH #define setupH String b2_name=""; #endif 就會有錯誤訊息 Public symbol '_b2_name' defined in both module 全域變數不能定義在這裡嗎? 謝謝
------
KUSO 無處不在
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-26 23:32:43 IP:211.76.xxx.xxx 未訂閱
kagaya 您好: 照理說,應該也是可以的。 依您提供的錯誤訊息來看,是不是您在其他地方也宣告了該變數? 您可先試著檢查看看。 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
kagaya
中階會員


發表:74
回覆:175
積分:59
註冊:2002-12-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-09-27 11:27:36 IP:210.200.xxx.xxx 未訂閱
你好 我寫的內容大略如下 ---------------qq.h---------------- #ifndef qqH #define qqH String s1="qq"; #endif ---------------unit1.cpp------------- ... #include "Unit1.h" #include "Unit2.h" #include "qq.h"; ... ShowMessage(s1); Form2->Show(); ---------------unit2.cpp------------- ... #include "Unit1.h" #include "Unit2.h" #include "qq.h"; ... ShowMessage(s1); Form1->Show(); 的確是有如上的warring錯誤訊息.不過編譯能過就是了 我是用BCB5
------
KUSO 無處不在
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-09-27 23:47:51 IP:211.76.xxx.xxx 未訂閱
引言: 你好 我寫的內容大略如下 ---------------qq.h---------------- #ifndef qqH #define qqH String s1="qq"; #endif 使用上述寫法,主要可以避免在"同一檔案中"重複引入相同的內容,進而造成重複定義的錯誤。 ---------------unit1.cpp------------- ... #include "Unit1.h" #include "Unit2.h" #include "qq.h"; ... ShowMessage(s1); Form2->Show(); ---------------unit2.cpp------------- ... #include "Unit1.h" #include "Unit2.h" #include "qq.h"; ... ShowMessage(s1); Form1->Show(); 您分別在"兩個不同的檔案"中,都引入"qq.h",因為對這兩個檔案來說,都只引入"qq.h"一次,因此s1便分別存在這兩個檔案中,如今又希望s1成為共用變數,所以compiler發出了警告訊息。 另外,將String s1="qq";放在"qq.c"中,且在"qq.h"中的s1改成 extern String s1;也是一個解決的辦法。 的確是有如上的warring錯誤訊息.不過編譯能過就是了 我是用BCB5
RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
renth555
一般會員


發表:32
回覆:65
積分:19
註冊:2003-02-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-09-28 01:50:34 IP:61.56.xxx.xxx 未訂閱
我在CB6也遇到這個問題有警告訊息但可以執行 不知要如何解決
kagaya
中階會員


發表:74
回覆:175
積分:59
註冊:2002-12-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-09-28 11:11:33 IP:211.76.xxx.xxx 未訂閱
感謝大大 後來我發現把extern寫在.h裡 然後變數定義在unit1.cpp裡 這樣就可以四處include而不會有錯誤訊息了 謝謝
------
KUSO 無處不在
系統時間:2024-05-15 12:20:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!