一個基礎問題,但網上都查不到 |
尚未結案
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: extern PACKAGE TForm1 *Form1; 請問上面的那段話的意義為何?? 似乎拿掉也沒關係。但想要深入的了解一下… #pragma package(smart_init) 還有上面的是否也能解釋一下呢!? 感激不盡! aftcast 你好: (1)第一行只是讓 Form1 這個指標變成全域變數而已,以前已經有討論過了 > --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
引言: [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 發送簡訊給我 |
引言: [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 發送簡訊給我 |
引言: 看了一下上面的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 發送簡訊給我 |
引言: 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 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |