版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1C+Builder工程的基本結(jié)構(gòu)工程的基本結(jié)構(gòu) 一、工程 1.1 工程概念 工程是為了實現(xiàn)特定功能所需的文件集合。 這個集合是一個特殊的文件夾,由工程文件進行描述和管理。第1頁/共35頁21.2 工程的要素工程的要素窗體單元資源選項C+Builder工程的基本結(jié)構(gòu)工程的基本結(jié)構(gòu)第2頁/共35頁3C+Builder工程的基本結(jié)構(gòu)工程的基本結(jié)構(gòu)1.3 項目的項目的主要文件主要文件工程描述文件(*.bpr)窗體文件(*.dfm)單元文件(*.cpp)資源文件(*.res)工程代碼文件(*.cpp)第3頁/共35頁4主要文件 簡介工程描述文件 (.bpr)新建工程時由系統(tǒng)自動創(chuàng)建單元文件 (.cpp
2、)一個窗體有一個單元。單元文件可以沒有窗體,用以保存公共元素。窗體文件 (.dfm)用于記錄窗體及窗體上控件的基本信息資源文件 (.res)保存圖標(biāo)、位圖等信息工程代碼文件 (*.cpp)新建工程時由系統(tǒng)自動創(chuàng)建頭文件(*.h),類定義文件第4頁/共35頁5q1.3.1 工程描述文件 工程描述文件的作用:用于描述宏定義,編譯選項,連接選項,文件清單等。結(jié)構(gòu)如下: . C+Builder工程的基本結(jié)構(gòu)第5頁/共35頁C+Builder工程的基本結(jié)構(gòu) . . /FILELIST .6第6頁/共35頁7q1.3.2 工程代碼文件 整個工程的總?cè)肟?,用于初始化工程,?chuàng)建窗體,啟動工程。示例代碼如下:#
3、include #pragma hdrstop USEFORM(Unit1.cpp, Form1); WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) C+Builder工程的基本結(jié)構(gòu)第7頁/共35頁C+Builder工程的基本結(jié)構(gòu) try Application-Initialize(); Application-CreateForm(_classid(TForm1), &Form1); Application-Run(); catch (Exception &exception) Application-ShowExcepti
4、on(&exception); 8第8頁/共35頁C+Builder工程的基本結(jié)構(gòu) catch (.) try throw Exception(); catch (Exception &exception) Application-ShowException(&exception); return 0;9第9頁/共35頁10q1.3.3 單元文件 (.cpp) 為窗體類的實現(xiàn)文件,其中有窗體的構(gòu)造方法,和窗體上各個控件的事件響應(yīng)方法。代碼如下:#include #pragma hdrstop#include Unit1.h#include Stdio.h#include
5、 iostream.h“#pragma package(smart_init)#pragma resource *.dfmTForm1 *Form1;C+Builder工程的基本結(jié)構(gòu)第10頁/共35頁C+Builder工程的基本結(jié)構(gòu)_fastcall TForm1:TForm1(TComponent* Owner) : TForm(Owner)void _fastcall TForm1:Button1Click(TObject *Sender) 11第11頁/共35頁12n.4 窗體文件窗體文件(.dfm) 窗體文件用于定義窗體,及窗體上組件的屬性。 在窗體上單擊鼠標(biāo)右鍵,在彈出菜單中選擇 V
6、iew as Text,即可看到窗體文件的內(nèi)容。 在窗體代碼窗口上單擊鼠標(biāo)右鍵,在彈出菜單中選擇 View as Form。 C+Builder工程的基本結(jié)構(gòu)第12頁/共35頁13object Form1: TForm1 Left = 234 Top = 124 Width = 696 Height = 480 object Button1: TButton Left = 32 Top = 400 OnClick = Button1Click endendC+Builder工程的基本結(jié)構(gòu)第13頁/共35頁14 1.3.6 頭文件(*.h) 頭文件用來聲明類。代碼示例如下:#ifndef Uni
7、t1H#define Unit1H#include #include #include #include #include C+Builder工程的基本結(jié)構(gòu)第14頁/共35頁class TForm1 : public TForm_published:/ IDE-managed Components TButton *Button1; TLabel *Label1; TMainMenu *MainMenu1;private:/ User declarationspublic:/ User declarations _fastcall TForm1(TComponent* Owner);exter
8、n PACKAGE TForm1 *Form1;#endif15第15頁/共35頁 二、工程需要保存的文件*.bpr*.cpp*.dfm*.res*.h小練習(xí): 新建一個項目,編譯運行,關(guān)閉項目,然后到項目文件夾下,刪除上述文件類型之外的文件,然后打開項目,看看能否從新編譯運行。16C+Builder工程的基本結(jié)構(gòu)第16頁/共35頁#pragma 預(yù)處理指令詳解 一、主要功能 對每個編譯器給出了一方法,在保持與C和C+語言完全兼容的情況下,給出主機或操作系統(tǒng)專有的特征。 編譯指示是機器或操作系統(tǒng)專有的,且對于每個編譯器都是不同的。 二、命令格式 #pragma para其中:para為命令參數(shù)
9、。17第17頁/共35頁#pragma 預(yù)處理指令詳解 三、常見參數(shù)和意義l3.1 message 在編譯信息輸出窗口中輸出相應(yīng)的信息,這對于源代碼信息的控制是非常重要的。其使用方法為: #pragma message(消息文本) 當(dāng)編譯器遇到這條指令時就在編譯輸出窗口中將消息文本打印出來。 如果在程序中定義了許多宏,用于控制源代碼版本,則有可能會忘記有沒有正確的設(shè)置這些宏,此時可以用這條指令在編譯的時候就進行檢查。18第18頁/共35頁#pragma 預(yù)處理指令詳解假設(shè)希望判斷有沒有在源代碼的什么地方定義了_X86這個宏,可以用下面的方法: #ifdef _X86 #pragma messa
10、ge(_X86 macro activated!) #endif 定義了_X86這個宏以后,應(yīng)用程序在編譯時就會在編譯輸出窗口里顯示_86 macro activated!。就會知道有沒有定義一些特定的宏了。19第19頁/共35頁#pragma 預(yù)處理指令詳解 格式: #pragma code_seg( section-name , section-class ) 它能夠設(shè)置程序中函數(shù)代碼存放的代碼段,當(dāng)開發(fā)驅(qū)動程序的時候就會使用到它。 20第20頁/共35頁#pragma 預(yù)處理指令詳解l3.3 once 只要在頭文件的最開始加入這條指令就能夠保證頭文件被編譯一次,這條指令實際上在VC6中就
11、已經(jīng)有了,但是考慮到兼容性并沒有太多的使用它。21第21頁/共35頁#pragma 預(yù)處理指令詳解l3.4 hdrstop 表示預(yù)編譯頭文件到此為止,后面的頭文件不進行預(yù)編譯。BCB可以預(yù)編譯頭文件以加快鏈接的速度,但如果所有頭文件都進行預(yù)編譯又可能占太多磁盤空間,所以使用這個選項排除一些頭文件。有時單元之間有依賴關(guān)系,比如單元 A 依賴單元 B,所以單元 B 要先于單元 A 編譯。 可以用#pragma startup 指定編譯優(yōu)先級,如果使用了#pragma package(smart_init),BCB就會根據(jù)優(yōu)先級的大小先后編譯。 22第22頁/共35頁#pragma 預(yù)處理指令詳解l
12、3.5 resource *.dfm 表示把*.dfm文件中的資源加入工程。*.dfm中包括窗體外觀的定義。l3.6 warning( disable: 4507 34; once: 4385; error: 164 ) 不顯示4507和34號警告信息 ,4385號警告信息僅報告一次,把164號警告信息作為一個錯誤。 pragma warning 支持的其它下格式: 23第23頁/共35頁#pragma 預(yù)處理指令詳解 #pragma warning( push )保存所有警告信息的現(xiàn)有的警告狀態(tài)。 #pragma warning( push, n )保存所有警告信息的現(xiàn)有的警告狀態(tài),并且把全
13、局警告等級設(shè)定為n(1-4)。 #pragma warning( pop )從棧中彈出最后一個警告信息,在入棧和出棧之間所作的一切改動取消。24第24頁/共35頁#pragma 預(yù)處理指令詳解l3.7 comment(.) 該指令將一個注釋記錄放入一個對象文件或可執(zhí)行文件中。 常用的lib關(guān)鍵字,可以幫我們連入一個庫文件。如: #pragma comment(lib, comctl32.lib) #pragma comment(lib, vfw32.lib) #pragma comment(lib, wsock32.lib)25第25頁/共35頁#pragma 預(yù)處理指令詳解l3.8 #pra
14、gma loop_opt(on|off) 激活循環(huán)|終止循環(huán)優(yōu)化功能。l3.9 #pragma warn +100 |-100 啟用或者禁止:“變量已定義但未使用的”警告信息。 26第26頁/共35頁#pragma 預(yù)處理指令詳解27第27頁/共35頁#pragma 預(yù)處理指令詳解內(nèi)存對齊問題 計算機系統(tǒng)對基本類型數(shù)據(jù)在內(nèi)存中存放的位置有限制,要求這些數(shù)據(jù)的首地址的值是某個數(shù) k(通常它為4或8)的倍數(shù),這就是內(nèi)存對齊,而這個 k 則被稱為該數(shù)據(jù)類型的對齊模數(shù)(alignment modulus)。 Win32平臺下的微軟 C 編譯器(cl.exe for 80 x86)在默認(rèn)情況下采用如下的
15、對齊規(guī)則: 任何基本數(shù)據(jù)類型 T 的對齊模數(shù)就是T的大小,即sizeof(T)。比如對于double類型(8字節(jié)),就要求該類型數(shù)據(jù)的地址總是8的倍數(shù)。28第28頁/共35頁#pragma 預(yù)處理指令詳解 Linux下的GCC的規(guī)則是:任何2字節(jié)大小的數(shù)據(jù)類的對齊模數(shù)是2,而其它所有超過2字節(jié)的數(shù)據(jù)類型都以4為對齊模數(shù)。 ANSI C規(guī)定一種結(jié)構(gòu)類型的大小是它所有字段的大小以及字段之間或字段尾部的填充區(qū)大小之和。 填充區(qū)就是為了使結(jié)構(gòu)體字段滿足內(nèi)存對齊要求而額外分配給結(jié)構(gòu)體的空間。 ANSI C標(biāo)準(zhǔn)規(guī)定結(jié)構(gòu)體類型的對齊要求不能比它所有字段中要求最嚴(yán)格的那個寬松,可以更嚴(yán)格。29第29頁/共35
16、頁#pragma 預(yù)處理指令詳解如何使用c/c+中的對齊選項 vc6中的編譯選項有 /Zp1|2|4|8|16 ,/Zp1表示以1字節(jié)邊界對齊,相應(yīng)的,/Zpn表示以n字節(jié)邊界對齊 n字節(jié)邊界對齊的意思是說,一個成員的地址必須安排在成員的尺寸的整數(shù)倍地址上或者是n的整數(shù)倍地址上,取它們中的最小值。也就是: min (sizeof( member),n)30第30頁/共35頁#pragma 預(yù)處理指令詳解l3.10 #pragma pack( n ),(n:1,2,4,8,16) 指定結(jié)構(gòu)和聯(lián)合成員的緊湊對齊。而一個完整的轉(zhuǎn)換單元的結(jié)構(gòu)和聯(lián)合的緊湊對齊由/Zp 選項設(shè)置。緊湊對齊用pack編譯指
17、示在數(shù)據(jù)說明層設(shè)置。該編譯指示在其出現(xiàn)后的第一個結(jié)構(gòu)或聯(lián)合說明處生效。 該編譯指示對定義無效。 第一個結(jié)構(gòu)成員之后的每個結(jié)構(gòu)成員都被存儲在更小的成員類型或 n 字節(jié)界限內(nèi)。 如果你使用無參量的#pragma pack, 結(jié)構(gòu)成員被緊湊為以/Zp 指定的值。該缺省/Zp 緊湊值為 /Zp8 。31第31頁/共35頁#pragma 預(yù)處理指令詳解l #pragma pack( push|pop ,identifier, n) 若不同的組件使用pack編譯指示指定不同的緊湊對齊, 這個語法允許你把程序組件組合為一個單獨的轉(zhuǎn)換單元。 帶push參量的pack編譯指示的每次出現(xiàn)將當(dāng)前的緊湊對齊存儲到一個內(nèi)部編譯器堆棧中。 編譯指示的參量表從左到右讀取。如果你使用push, 則當(dāng)前緊湊值被存儲起來; 值是一樣的。32第32頁/共35頁#pragma 預(yù)處理指令詳解如果你給出一個n 的值, 該值將成為新的緊湊值。若指定一個標(biāo)識符, 即你選定一個名稱, 則該標(biāo)識符將和這個新的的緊湊值聯(lián)系起來。 帶一個pop參量的pack編譯指示的每次出現(xiàn)都會檢索內(nèi)部編譯器堆棧頂?shù)闹?并且使該值為新的緊湊對齊值。如果使用pop參量且內(nèi)部編譯器堆棧是空的,則緊湊值為命令行給定的值, 并且
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024生活垃圾運輸合同范本-農(nóng)村生活垃圾處理項目3篇
- 2024苗木運輸途中保險理賠及應(yīng)急處理服務(wù)合同2篇
- 2025年度金融機構(gòu)小微企業(yè)委托貸款借款合同范本3篇
- 2025年度水電安裝與設(shè)備遠程監(jiān)控服務(wù)合同3篇
- 二零二五年度航空配件海洋貨物運輸保險及維修服務(wù)合同3篇
- 專用工程材料采購協(xié)議2024版版A版
- 二零二五年度特色小鎮(zhèn)存量房買賣居間服務(wù)協(xié)議3篇
- 2024版:古典家具修復(fù)與保養(yǎng)服務(wù)協(xié)議
- 二零二五年度股權(quán)代持合同:涉公司重組與并購協(xié)議3篇
- 小學(xué)數(shù)學(xué)競賽中的問題解決能力提升
- 數(shù)據(jù)采集服務(wù)委托合同
- DB11T 1833-2021 建筑工程施工安全操作規(guī)程
- 信息檢索課件 第2章 文獻檢索方法(1)-2
- 河長制工作總結(jié)報告5篇河長制年度工作總結(jié)
- 第二期專題04-短文填空(6選5)-沖刺中考英語必考題型終極預(yù)測(深圳專用)
- 民間借貸利息計算表
- 酒店保潔服務(wù)投標(biāo)方案(技術(shù)方案)
- 《白描花卉妙筆生》 課件 2024-2025學(xué)年嶺南美版(2024) 初中美術(shù)七年級上冊
- 2025年公務(wù)員考試申論試題與參考答案
- 2024年秋季新人教PEP版三年級上冊英語全冊教案
- 蘇教版四年級上冊四則混合運算練習(xí)200道及答案
評論
0/150
提交評論