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

一個基礎問題,但網上都查不到

尚未結案
aftcast
站務副站長


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-10 16:54:39 IP:61.219.xxx.xxx 未訂閱
extern PACKAGE TForm1 *Form1; 請問上面的那段話的意義為何?? 似乎拿掉也沒關係。但想要深入的了解一下… #pragma package(smart_init) 還有上面的是否也能解釋一下呢!? 感激不盡!
------


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

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-10 17:14:57 IP:203.73.xxx.xxx 未訂閱
引言: extern PACKAGE TForm1 *Form1; 請問上面的那段話的意義為何?? 似乎拿掉也沒關係。但想要深入的了解一下… #pragma package(smart_init) 還有上面的是否也能解釋一下呢!? 感激不盡!
aftcast 你好:
(1)第一行只是讓 Form1 這個指標變成全域變數而已,以前已經有討論過了
   >    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
aftcast
站務副站長


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-10 17:54:12 IP:61.219.xxx.xxx 未訂閱
引言: [code] aftcast 你好: (1)第一行只是讓 Form1 這個指標變成全域變數而已,以前已經有討論過了 >< face="Verdana, Arial, Helvetica"> 看了一下上面的link後,發現好像不是我想知道的。我知道那是一個global pointer,但為何要在 cpp 內文裡宣告 TForm1 *Form1; //這應該是global的宣告 然後又在header 裡宣告一次 extern PACKAGE TForm1 *Form1; 且,其中的 PACKAGE 這個keyword,若去找其declaration,則發現其為一個macro… 我真正想知的是 extern PACKAGE 這個modifier 是做啥用的,不是很明白。 以下是查了一下PACKAGE的資料: #define PACKAGE __declspec(package) 然後再去help裡看一下__declspec(package) …說是 __declspec(package) The package argument indicates that the code defining the class can be compiled in a package. This modifier is auto-generated by the compiler when creating packages in the IDE. 但是整個 extern PACKAGE TForm1 *Form1; 這句話明套到說明上,實在不明其真正的含意。
------


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

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
aftcast
站務副站長


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-10 17:54:40 IP:61.219.xxx.xxx 未訂閱
引言: [code] aftcast 你好: (1)第一行只是讓 Form1 這個指標變成全域變數而已,以前已經有討論過了 >< face="Verdana, Arial, Helvetica"> 看了一下上面的link後,發現好像不是我想知道的。我知道那是一個global pointer,但為何要在 cpp 內文裡宣告 TForm1 *Form1; //這應該是global的宣告 然後又在header 裡宣告一次 extern PACKAGE TForm1 *Form1; 且,其中的 PACKAGE 這個keyword,若去找其declaration,則發現其為一個macro… 我真正想知的是 extern PACKAGE 這個modifier 是做啥用的,不是很明白。 以下是查了一下PACKAGE的資料: #define PACKAGE __declspec(package) 然後再去help裡看一下__declspec(package) …說是 __declspec(package) The package argument indicates that the code defining the class can be compiled in a package. This modifier is auto-generated by the compiler when creating packages in the IDE. 但是整個 extern PACKAGE TForm1 *Form1; 這句話明套到說明上,實在不明其真正的含意。
------


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

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-10 20:05:01 IP:61.221.xxx.xxx 未訂閱
引言: 看了一下上面的link後,發現好像不是我想知道的。我知道那是一個global pointer,但為何要在 cpp 內文裡宣告 TForm1 *Form1; //這應該是global的宣告 然後又在header 裡宣告一次 extern PACKAGE TForm1 *Form1; 且,其中的 PACKAGE 這個keyword,若去找其declaration,則發現其為一個macro… 我真正想知的是 extern PACKAGE 這個modifier 是做啥用的,不是很明白。 以下是查了一下PACKAGE的資料: #define PACKAGE __declspec(package) 然後再去help裡看一下__declspec(package) …說是 __declspec(package) The package argument indicates that the code defining the class can be compiled in a package. This modifier is auto-generated by the compiler when creating packages in the IDE. 但是整個 extern PACKAGE TForm1 *Form1; 這句話明套到說明上,實在不明其真正的含意。
aftcast 你好: 我想~~你大概是有所誤解吧,這裡所謂的全域變數,可以同時被很多 *.cpp 存 取,不只是 Unit1.cpp,以前這方面的討論文章也有很多,你可以自己以關鍵字 「extern」在本站搜尋,小弟我就不再另外列出了 --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
aftcast
站務副站長


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-10 20:41:34 IP:218.166.xxx.xxx 未訂閱
引言: aftcast 你好: 我想~~你大概是有所誤解吧,這裡所謂的全域變數,可以同時被很多 *.cpp 存 取,不只是 Unit1.cpp,以前這方面的討論文章也有很多,你可以自己以關鍵字 「extern」在本站搜尋,小弟我就不再另外列出了 -- >< face="Verdana, Arial, Helvetica"> 謝謝您的回覆! 雖然還是覺得未能得到想知的……extern 這個關鍵字在 C/C 裡是表此變數可能定義在檔身或檔外。然而我好奇的是為何多一個package?? 剛我去把這個字刪了。變成 extern TForm1 *Form1。程式還是跑的很好。BCB是個很強很有效率的語言,但也因為如此,總覺得要能完整駕馭比學vc 還難。一個自動產生的global pointer,是很方便,但常覺得累贅,也常誤導初學者。比如說在impelement 本身class 的 member function時,就出現form1這個pointer,如 : form1->Edit1->Text。表面上程式run沒問題,但正確的關念上應該用 this->Edit1->Text 。當然this 可省,但若為了要code compeletion,加this才會show出來。想想,若這個TForm1的class哪天你要動態的命名foo來產生時,那剛那個function還能用嗎?? form1 那個instance跟本沒產生。 說多了。我只是想了解一下,為何預設會多一個PACKAGE這個字,而這個字有何內在的影響,而我是否能自行改變或刪除…就好像當某個form只有showmodal時,我總是會把CPP裡的TForm1 * Form1 和header裡的extern package TForm1 * Form1 手動移除。 最後還是感謝版主抽空幫我…這是一個很棒的討論版,回應都很快,大家也很熱心。我會去查一下extern這個keyword找一下文章的。謝謝
------


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

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


發表:10
回覆:15
積分:5
註冊:2003-09-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-13 19:01:43 IP:61.13.xxx.xxx 未訂閱
PACKAGE 不好意思 我不是很確定 但這個字眼好像曾經有人跟我說過 跟compiler極有關係 下了PACKAGE之後經過compile 在實際執行上 似乎會節省一些memory還是stack之類的 跟功能沒關係 所以拿不拿掉應該感覺不出什麼 可能在一些small memory system上才會有差吧 真的不好意思 我也不是非常清楚 只知道這樣了 可能往這方面查會比較有用吧
aftcast
站務副站長


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-13 22:59:18 IP:218.166.xxx.xxx 未訂閱
wjlin 謝謝您的提示和回答。我會試著往那個方面查!
------


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

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